Penggantian metode dan kelebihan beban adalah manifestasi berbeda dari polimorfisme Java. Overriding merupakan manifestasi polimorfisme antara induk dan subkelas, sedangkan kelebihan beban merupakan manifestasi polimorfisme pada suatu kelas.
Jika suatu metode yang didefinisikan dalam suatu subkelas memiliki nama dan parameter yang sama dengan kelas induknya, kita katakan metode tersebut overriding. Ketika sebuah objek dari subkelas menggunakan metode ini, ia akan memanggil definisi di subkelas tersebut. Untuk itu, definisi di kelas induk tampaknya "terlindung".
Jika beberapa metode dengan nama yang sama didefinisikan dalam suatu kelas, dan metode tersebut mungkin memiliki jumlah parameter yang berbeda, tipe parameter yang berbeda, atau urutan parameter yang berbeda, hal ini disebut kelebihan metode. Itu tidak dapat dibebani oleh izin akses, tipe kembalian, atau pengecualian yang diberikan.
1. Metode kelebihan beban (overload)
Konsep: Sederhananya: kelebihan metode adalah beberapa metode implementasi dari fungsi yang sama dalam suatu kelas. Metode mana yang digunakan bergantung pada parameter yang diberikan oleh pemanggil.
Hal yang perlu diperhatikan:
(1) Nama metodenya sama (2) Tipe parameter, jumlah, dan urutan metode tidak berbeda pada setidaknya salah satu metode (3) Tipe kembalian metode bisa berbeda (4) Pengubah dari metodenya bisa berbeda. Jika hanya tipe pengembaliannya saja yang berbeda, maka hal tersebut tidak dapat dianggap sebagai kelebihan beban. Jika kelebihan beban hanya memiliki simbol pengubah akses kontrol yang berbeda, maka hal tersebut tidak dapat dianggap sebagai kelebihan beban.
Metode kelebihan beban dapat mengubah jenis nilai kembalian.
2. Metode penggantian (override)
Konsep: Sederhananya: cakupan metode berarti bahwa subkelas memiliki metode yang memiliki nama, tipe kembalian, dan parameter yang sama dengan metode kelas induk kelas.
Catatan: Ada banyak syarat untuk cakupan metode. Secara umum, ada dua hal yang harus Anda perhatikan:
(1) Tipe kembalian, parameter, dan nama metode dari metode subkelas harus sama persis dengan tipe kembalian, parameter, dan nama metode dari metode kelas induk, jika tidak maka akan terjadi kesalahan kompilasi.
(2) Metode subkelas tidak dapat mengurangi hak akses metode kelas induk (dapat terjadi sebaliknya)
contoh:
Ganti contoh