Hi! Sampeyan wis nggunakake cara Jawa lan ngerti akeh babagan. Cara kerjane overriding - 1Mesthi sampeyan wis nemokake kelas kanthi akeh metode sing duwe jeneng sing padha nanging dhaptar argumen sing beda. Sampeyan bakal kelingan manawa ing kasus kasebut, kita nggunakake metode overloading. Dina iki kita bakal nliti kahanan sing beda. Mbayangno yen kita duwe siji cara umum, nanging kudu nindakake perkara sing beda-beda gumantung saka kelas sing diarani. Kepiye carane nindakake prilaku iki? Kanggo mangerteni iki, ayo njupuk Animalkelas induk, sing makili kewan, lan nggawe speakmetode 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: Cara kerjane overriding - 2kita pengin supaya ora nggawe Bunch saka cara kanggo ngandika. Tinimbang nggawe 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 Animalkelas 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:
  1. Ing saben kelas turunan, kita nggawe metode kanthi jeneng sing padha karo metode ing kelas induk.
  2. 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. .

  3. Kita nulis implementasine sing dibutuhake kanggo saben kelas turunan. Yen speak()diarani cara, ula kudu ngempet, bruwang kudu nggereng, lan liya-liyane.
Ayo ndeleng cara kerjane ing program:

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 Animalkelas 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 kerjane cara overriding - 3Cara overriding duwe sawetara watesan:
  1. Cara sing ditimpa kudu duwe argumen sing padha karo metode ing kelas induk.

    Yen speakmetode kelas induk njupuk a Stringminangka input, banjur metode overridden ing kelas turunan uga kudu njupuk Stringminangka 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!");
       }
    }
    

  2. 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!";
       }
    }
    

  3. 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!");
       }
    }
    
Ing Jawa, metode overriding minangka salah sawijining cara kanggo ngetrapake polimorfisme. Tegese kauntungan utama yaiku keluwesan sing wis diomongake sadurunge. Kita bisa mbangun hirarki kelas sing prasaja lan logis, saben duwe prilaku tartamtu (asu barking, kucing meowing) nanging antarmuka siji - cara siji speak()kanggo saben wong tinimbang macem-macem cara, contone bark(), meow(), etc.