- Înțelegerea problemei fără înlocuirea metodei
- Putem suprascrie metoda statică
- Supraîncărcarea metodei vs. suprascrierea metodei
Dacă subclasa (clasa copil) are aceeași metodă ca cea declarată în clasa părinte, este cunoscută ca înlocuirea metodei în Java .
Cu alte cuvinte, dacă o subclasă oferă implementarea specifică a metodei care a fost declarată de una dintre clasele sale părinte, aceasta este cunoscută sub numele de suprascriere a metodei.
Utilizarea suprascrierii metodei Java
- Suprascrierea metodei este utilizată pentru a furniza implementarea specifică a unei metode care este deja furnizată de superclasa sa.
- Suprascrierea metodei este utilizată pentru polimorfismul de rulare
Reguli pentru înlocuirea metodei Java
- Metoda trebuie să aibă același nume ca și în clasa părinte
- Metoda trebuie să aibă același parametru ca în clasa părinte.
- Trebuie să existe o relație IS-A (moștenire).
Înțelegerea problemei fără înlocuirea metodei
Să înțelegem problema cu care ne putem confrunta în program dacă nu folosim suprascrierea metodei.
//Java Program to demonstrate why we need method overriding //Here, we are calling the method of parent class with child //class object. //Creating a parent class class Vehicle{ void run(){System.out.println('Vehicle is running');} } //Creating a child class class Bike extends Vehicle{ public static void main(String args[]){ //creating an instance of child class Bike obj = new Bike(); //calling the method with child class instance obj.run(); } }Testează-l acum
Ieșire:
Vehicle is running
Problema este că trebuie să ofer o implementare specifică a metodei run() în subclasă, de aceea folosim suprascrierea metodei.
Exemplu de depășire a metodei
În acest exemplu, am definit metoda run în subclasă așa cum este definită în clasa părinte, dar are o implementare specifică. Numele și parametrul metodei sunt aceleași și există o relație IS-A între clase, deci există o suprascriere a metodei.
//Java Program to illustrate the use of Java Method Overriding //Creating a parent class. class Vehicle{ //defining a method void run(){System.out.println('Vehicle is running');} } //Creating a child class class Bike2 extends Vehicle{ //defining the same method as in the parent class void run(){System.out.println('Bike is running safely');} public static void main(String args[]){ Bike2 obj = new Bike2();//creating object obj.run();//calling method } }Testează-l acum
Ieșire:
Bike is running safely
Un exemplu real de suprascriere a metodei Java
Luați în considerare un scenariu în care Banca este o clasă care oferă funcționalitate pentru a obține rata dobânzii. Cu toate acestea, rata dobânzii variază în funcție de bănci. De exemplu, băncile SBI, ICICI și AXIS ar putea oferi o dobândă de 8%, 7% și 9%.
Suprascrierea metodei Java este folosită mai ales în Runtime Polymorphism, pe care îl vom afla în paginile următoare.
//Java Program to demonstrate the real scenario of Java Method Overriding //where three classes are overriding the method of a parent class. //Creating a parent class. class Bank{ int getRateOfInterest(){return 0;} } //Creating child classes. class SBI extends Bank{ int getRateOfInterest(){return 8;} } class ICICI extends Bank{ int getRateOfInterest(){return 7;} } class AXIS extends Bank{ int getRateOfInterest(){return 9;} } //Test class to create objects and call the methods class Test2{ public static void main(String args[]){ SBI s=new SBI(); ICICI i=new ICICI(); AXIS a=new AXIS(); System.out.println('SBI Rate of Interest: '+s.getRateOfInterest()); System.out.println('ICICI Rate of Interest: '+i.getRateOfInterest()); System.out.println('AXIS Rate of Interest: '+a.getRateOfInterest()); } }Testează-l acum
Output: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9
Putem suprascrie metoda statică?
Nu, o metodă statică nu poate fi suprascrisă. Poate fi dovedit prin polimorfismul runtime, așa că îl vom învăța mai târziu.
De ce nu putem suprascrie metoda statică?
Se datorează faptului că metoda statică este legată de clasă, în timp ce metoda instanței este legată de un obiect. Static aparține zonei de clasă, iar o instanță aparține zonei heap.
Putem suprascrie metoda principală java?
Nu, pentru că principala este o metodă statică.
ce este awt
Diferența dintre supraîncărcarea metodei și suprascrierea metodei în java
Faceți clic pe mine pentru diferența dintre supraîncărcarea metodei și suprascrierea
Mai multe subiecte despre modificarea metodei (nu pentru începători)
Suprascrierea metodei cu Modificatorul de accesSă vedem conceptul de înlocuire a metodei cu modificatorul de acces.
Gestionarea excepțiilor cu suprascrierea metodeiSă vedem conceptul de suprascriere a metodei cu gestionarea excepțiilor.