
Animal
kelas induk, sing makili kewan, lan nggawe speak
metode kasebut:
public class Animal {
public void speak() {
System.out.println("Hello!");
}
}
Senajan kita mung miwiti nulis program kita, sampeyan mbokmenawa bisa ndeleng masalah potensial: donya kebak akèh kewan, lan kabeh padha "ngomong" beda: kucing meow, bebek quack, ula hiss, etc. Kita goal punika prasaja: 
meow()
cara kanggo meowing, hiss()
kanggo hissing, etc., kita pengin ula kanggo hiss, kucing kanggo meow, lan asu kanggo babakan nalika cara speak()
disebut. Kita bisa entuk iki kanthi gampang nggunakake metode overriding . Wikipedia nerangake istilah kasebut ing ngisor iki: Metode overriding, ing pemrograman berorientasi obyek, minangka fitur basa sing ngidini subclass utawa kelas anak nyedhiyakake implementasi spesifik saka metode sing wis diwenehake dening salah sawijining superclass utawa kelas induk. Sejatine bener. Overriding ngijini sampeyan njupuk sawetara cara saka kelas induk lan nulis implementasine dhewe ing saben kelas asale. Implementasi anyar ing kelas anak "ngganti" sing ana ing wong tuwa. Ayo ndeleng carane iki katon karo conto. Ayo nggawe 4 keturunan saka Animal
kelas kita:
public class Bear extends Animal {
@Override
public void speak() {
System.out.println("Growl!");
}
}
public class Cat extends Animal {
@Override
public void speak() {
System.out.println("Meow!");
}
}
public class Dog extends Animal {
@Override
public void speak() {
System.out.println("Woof!");
}
}
public class Snake extends Animal {
@Override
public void speak() {
System.out.println("Hiss!");
}
}
Mangkene lifehack cilik kanggo masa depan: kanggo ngatasi metode kelas induk, pindhah menyang kode kelas sing diturunake ing IntelliJ IDE , penet Ctrl + O , banjur pilih Metode Override ... saka menu. Biasane nggunakake hotkeys wiwit wiwitan. Dheweke bakal nyepetake coding! Kanggo entuk prilaku sing dikarepake, kita nindakake sawetara perkara:
- Ing saben kelas turunan, kita nggawe metode kanthi jeneng sing padha karo metode ing kelas induk.
-
Kita ngandhani kompiler yen kita ora mung menehi metode kanthi jeneng sing padha ing kelas induk nanging kita pengin ngilangi prilaku kasebut. "Pesen" iki kanggo kompiler dikirim liwat anotasi @Override .
Anotasi @Override ing ndhuwur metode ngandhani kompiler (uga programer liyane sing maca kode sampeyan), "Aja kuwatir. Iki dudu kesalahan utawa kelalaian. Aku ngerti yen metode iki wis ana, lan aku pengin ngilangi. . - Kita nulis implementasine sing dibutuhake kanggo saben kelas turunan. Yen
speak()
diarani cara, ula kudu ngempet, bruwang kudu nggereng, lan liya-liyane.
public class Main {
public static void main(String[] args) {
Animal animal1 = new Dog();
Animal animal2 = new Cat();
Animal animal3 = new Bear();
Animal animal4 = new Snake();
animal1.speak();
animal2.speak();
animal3.speak();
animal4.speak();
}
}
Output konsol:
Woof!
Meow!
Growl!
Hiss!
Apik banget, kabeh bisa ditindakake! Kita nggawe 4 variabel referensi sing jinis Animal
kelas induk, lan menehi 4 obyek sing beda saka kelas turunan. Akibaté, saben obyek tumindak beda. Kanggo saben kelas sing diturunake, speak()
metode sing ditindhes ngganti speak()
metode kelas sing wis ana Animal
(sing mung nampilake "Speaking: " ing console). 
-
Cara sing ditimpa kudu duwe argumen sing padha karo metode ing kelas induk.
Yen
speak
metode kelas induk njupuk aString
minangka input, banjur metode overridden ing kelas turunan uga kudu njupukString
minangka input. Yen ora, kompiler bakal ngasilake kesalahan:public class Animal { public void speak(String s) { System.out.println("Speaking: " + s); } } public class Cat extends Animal { @Override // Error! public void speak() { System.out.println("Meow!"); } }
-
Cara sing ditindhes kudu duwe jinis bali sing padha karo metode ing kelas induk.
Yen ora, kita bakal entuk kesalahan kompilasi:
public class Animal { public void speak() { System.out.println("Hello!"); } } public class Cat extends Animal { @Override public String speak() { // Error! System.out.println("Meow!"); return "Meow!"; } }
-
Modifier akses cara overridden uga ora bisa beda karo sing asli:
public class Animal { public void speak() { System.out.println("Hello!"); } } public class Cat extends Animal { @Override private void speak() { // Error! System.out.println("Meow!"); } }
speak()
kanggo saben wong tinimbang macem-macem cara, contone bark()
, meow()
, etc.
GO TO FULL VERSION