Anularea Metodei Java

În acest tutorial, vom învăța despre suprascrierea metodelor în Java cu ajutorul exemplelor.

În ultimul tutorial, am aflat despre moștenire. Moștenirea este o proprietate OOP care ne permite să derivăm o nouă clasă (subclasă) dintr-o clasă existentă (superclasă). Subclasa moștenește atributele și metodele superclasei.

Acum, dacă aceeași metodă este definită atât în ​​superclasă, cât și în subclasă, atunci metoda clasei de subclasă suprascrie metoda superclasei. Acest lucru este cunoscut sub numele de metoda suprascriere.

Exemplul 1: Metoda suprascriere

 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(); ) ) 

Ieșire :

 Sunt un caine. 

În programul de mai sus, displayInfo()metoda este prezentă atât în ​​superclasa Animal, cât și în subclasa Dog.

Când apelăm displayInfo()folosind obiectul d1 (obiectul subclasei), se numește metoda din interiorul subclasei Dog. displayInfo()Metoda subclasei suprascrie aceeași metodă de superclasa.

Observați utilizarea @Overrideadnotării în exemplul nostru. În Java, adnotările sunt metadatele pe care le-am folosit pentru a furniza informații compilatorului. Aici, @Overrideadnotarea specifică compilatorul că metoda după această adnotare suprascrie metoda superclasei.

Nu este obligatoriu să se utilizeze @Override. Cu toate acestea, atunci când folosim acest lucru, metoda ar trebui să respecte toate regulile de suprascriere. În caz contrar, compilatorul va genera o eroare.

Reguli de suprascriere Java

  • Atât superclasa, cât și subclasa trebuie să aibă același nume de metodă, același tip de returnare și aceeași listă de parametri.
  • Nu putem suprascrie metoda declarată ca finalși static.
  • Ar trebui să trecem întotdeauna peste metodele abstracte ale superclasei (vom discuta în tutoriale ulterioare).

super cuvânt cheie în Java Overriding

O întrebare comună care apare în timpul efectuării suprascrierii în Java este:

Putem accesa metoda superclasei după suprascriere?

Ei bine, răspunsul este Da . Pentru a accesa metoda superclasei din subclasă, folosim supercuvântul cheie.

Exemplul 2: utilizarea super cuvântului cheie

 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(); ) ) 

Ieșire :

Sunt un animal. Sunt un caine.

În exemplul de mai sus, subclasa Dog suprascrie metoda displayInfo()superclasei Animal.

Când apelăm metoda displayInfo()folosind obiectul d1 al subclasei Dog, se numește metoda din interiorul subclasei Dog; nu se apelează metoda din interiorul superclasei.

În interiorul displayInfo()subclasei câinilor, obișnuiam super.displayInfo()să apelăm displayInfo()la superclasă.

Este important să rețineți că constructorii din Java nu sunt moșteniți. Prin urmare, nu există un lucru cum ar fi constructorul care suprascrie în Java.

Cu toate acestea, putem numi constructorul superclasei din subclasele sale. Pentru asta, folosim super(). Pentru a afla mai multe, vizitați cuvântul cheie super Java.

Specificații de acces în Metoda suprascriere

Aceeași metodă declarată în superclasă și subclasele acesteia poate avea specificatori de acces diferiți. Cu toate acestea, există o restricție.

Putem folosi acei specificatori de acces numai în subclasele care oferă acces mai mare decât specificatorul de acces al superclasei. De exemplu,

Să presupunem că myClass()este declarată o metodă din superclasă protected. Apoi, aceeași metodă myClass()din subclasă poate fi publicsau protected, dar nu private.

Exemplul 3: Specificator de acces în suprascriere

 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(); ) ) 

Ieșire :

 Sunt un caine. 

În exemplul de mai sus, subclasa Dog suprascrie metoda displayInfo()superclasei Animal.

Ori de câte ori apelăm displayInfo()folosind d1 (obiectul subclasei), se apelează metoda din interiorul subclasei.

Observați că, displayInfo()este declarat protectedîn superclasa Animal. Aceeași metodă are publicspecificatorul de acces în subclasa Dog. Acest lucru este posibil, deoarece publicoferă acces mai mare decât protected.

Metode abstracte superioare

În Java, clasele abstracte sunt create pentru a fi superclasa altor clase. Și, dacă o clasă conține o metodă abstractă, este obligatoriu să o suprascrieți.

Vom afla mai multe despre clasele abstracte și suprascrierea metodelor abstracte în tutoriale ulterioare.

Articole interesante...