Mengganti Metode Java
Penggantian Metode Java
Dalam tutorial ini, kita akan belajar tentang metode overriding di Java dengan bantuan contoh.
Dalam tutorial terakhir, kita belajar tentang pewarisan. Warisan adalah properti OOP yang memungkinkan kita untuk menurunkan kelas baru (subclass) dari kelas yang ada (superclass). Subclass mewarisi atribut dan metode superclass.
Sekarang, jika metode yang sama didefinisikan di kedua superclass dan subclass, maka metode kelas subclass menimpa metode superclass. Ini dikenal sebagai penggantian metode.
Contoh 1:Penggantian Metode
class Animal {
public void displayInfo() {
System.out.println("I am an animal.");
}
}
class Dog extends Animal {
@Override
public void displayInfo() {
System.out.println("I am a dog.");
}
}
class Main {
public static void main(String[] args) {
Dog d1 = new Dog();
d1.displayInfo();
}
}
Keluaran :
I am a dog.
Pada program di atas, displayInfo()
metode ini ada di Hewan superclass dan Anjing subkelas.
Saat kita memanggil displayInfo()
menggunakan d1 objek (objek dari subkelas), metode di dalam subkelas Anjing disebut. displayInfo()
metode subkelas menimpa metode yang sama dari kelas super.
Perhatikan penggunaan @Override
anotasi dalam contoh kita. Di Java, anotasi adalah metadata yang kami gunakan untuk memberikan informasi kepada kompiler. Di sini, @Override
anotasi menentukan kompiler bahwa metode setelah anotasi ini menimpa metode superclass.
Tidak wajib menggunakan @Override
. Namun, ketika kami menggunakan ini, metode ini harus mengikuti semua aturan penggantian. Jika tidak, kompilator akan menghasilkan kesalahan.
Aturan Penggantian Java
- Baik superclass maupun subclass harus memiliki nama metode yang sama, tipe pengembalian yang sama, dan daftar parameter yang sama.
- Kami tidak dapat mengganti metode yang dideklarasikan sebagai
final
dan static
.
- Kita harus selalu mengganti metode abstrak dari superclass (akan dibahas dalam tutorial selanjutnya).
Kata Kunci super di Java Overriding
Pertanyaan umum yang muncul saat melakukan override di Java adalah:
Dapatkah kita mengakses metode superclass setelah menimpa?
Jawabannya adalah Ya . Untuk mengakses metode superclass dari subclass, kami menggunakan super
kata kunci.
Contoh 2:Penggunaan Kata Kunci super
class Animal {
public void displayInfo() {
System.out.println("I am an animal.");
}
}
class Dog extends Animal {
public void displayInfo() {
super.displayInfo();
System.out.println("I am a dog.");
}
}
class Main {
public static void main(String[] args) {
Dog d1 = new Dog();
d1.displayInfo();
}
}
Keluaran :
I am an animal.
I am a dog.
Dalam contoh di atas, subkelas Anjing menimpa metode displayInfo()
dari kelas super Hewan .
Saat kita memanggil metode displayInfo()
menggunakan d1 objek Anjing subkelas, metode di dalam Anjing subkelas disebut; metode di dalam superclass tidak dipanggil.
Di dalam displayInfo()
dari Anjing subclass, kami telah menggunakan super.displayInfo()
untuk memanggil displayInfo()
dari kelas super.
Penting untuk dicatat bahwa konstruktor di Java tidak diwariskan. Oleh karena itu, tidak ada yang namanya override konstruktor di Java.
Namun, kita dapat memanggil konstruktor superclass dari subclass-nya. Untuk itu, kami menggunakan super()
. Untuk mempelajari lebih lanjut, kunjungi kata kunci super Java.
Access Specifiers di Method Overriding
Metode yang sama dideklarasikan di superclass dan subclass-nya dapat memiliki penentu akses yang berbeda. Namun, ada batasannya.
Kami hanya dapat menggunakan penentu akses tersebut di subkelas yang menyediakan akses lebih besar daripada penentu akses superkelas. Misalnya,
Misalkan, sebuah metode myClass()
di superclass dideklarasikan protected
. Kemudian, metode yang sama myClass()
di subclass dapat berupa public
atau protected
, tapi bukan private
.
Contoh 3:Access Specifier di Overriding
class Animal {
protected void displayInfo() {
System.out.println("I am an animal.");
}
}
class Dog extends Animal {
public void displayInfo() {
System.out.println("I am a dog.");
}
}
class Main {
public static void main(String[] args) {
Dog d1 = new Dog();
d1.displayInfo();
}
}
Keluaran :
I am a dog.
Dalam contoh di atas, subkelas Anjing menimpa metode displayInfo()
dari kelas super Hewan .
Setiap kali kita memanggil displayInfo()
menggunakan d1 (objek dari subkelas), metode di dalam subkelas dipanggil.
Perhatikan bahwa, displayInfo()
dideklarasikan protected
di Hewan kelas super. Metode yang sama memiliki public
penentu akses di Anjing subkelas. Hal ini dimungkinkan karena public
menyediakan akses yang lebih besar daripada protected
.
Mengganti Metode Abstrak
Di Java, kelas abstrak dibuat untuk menjadi superclass dari kelas lain. Dan, jika kelas berisi metode abstrak, wajib untuk menimpanya.
Kita akan belajar lebih banyak tentang kelas abstrak dan mengganti metode abstrak di tutorial selanjutnya.