Pada konsep mengenai polimorfisme (polymorphism) di mana sebuah class turunan (subclass) dapat memiliki sifat yang berbeda dengan class induknya (superclass). Singkatnya, polimorfisme memungkinkan kita melakukan hal yang sama dengan berbagai cara yang berbeda. Polimorfisme di Java dapat dilakukan menggunakan method overloading dan method overriding.
Perbedaan yang mendasar antara method overloading dan method overriding bisa dijabarkan sebagai berikut:
Method Overloading | Method Overriding |
Digunakan untuk meningkatkan keterbacaan (readability) kode program | Digunakan untuk memberikan implementasi spesifik dari method yang sudah ada di class induk (superclass) |
Diterapkan pada class yang sama (2 atau lebih method dengan nama yang sama, pada class yang sama) | Diterapkan pada 2 class yang berbeda yang memiliki hubungan pewarisan (inheritance) |
Parameter pada method overloading harus berbeda, baik pada jumlah atau tipe datanya. | Parameter pada method overriding harus sama |
Merupakan contoh compile-time polymorphism. | Merupakan contoh run-time polymorphism |
Di Java, overloading tidak bisa dilakukan hanya dengan mengubah tipe data nilai kembalian (return type) dari method saja. Jika mengubah tipe data nilai kembalian, maka parameter harus diubah juga. | Tipe data nilai kembalian (return type) harus sama atau kovarian |