- Förstå problemet utan att metoden åsidosätter
- Kan vi åsidosätta den statiska metoden
- Metodöverbelastning kontra metodöverskridande
Om underklassen (underklassen) har samma metod som deklarerats i den överordnade klassen, kallas den metod åsidosättande i Java .
Med andra ord, om en underklass tillhandahåller den specifika implementeringen av metoden som har deklarerats av en av dess överordnade klasser, kallas det metodöverskridande.
Användning av Java Method Åsidosättande
- Metodöverstyrning används för att tillhandahålla den specifika implementeringen av en metod som redan tillhandahålls av dess superklass.
- Metodöverstyrning används för körtidspolymorfism
Regler för överstyrning av Java-metoder
- Metoden måste ha samma namn som i den överordnade klassen
- Metoden måste ha samma parameter som i den överordnade klassen.
- Det måste finnas ett IS-A-förhållande (arv).
Förstå problemet utan att metoden åsidosätter
Låt oss förstå problemet som vi kan möta i programmet om vi inte använder metodöverstyrning.
//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(); } }Testa det nu
Produktion:
Vehicle is running
Problemet är att jag måste tillhandahålla en specifik implementering av metoden run() i underklassen, det är därför vi använder metodöverstyrning.
Exempel på metodöverstyrning
I det här exemplet har vi definierat körmetoden i underklassen som den definieras i den överordnade klassen, men den har någon specifik implementering. Namnet och parametern för metoden är desamma, och det finns ett IS-A-förhållande mellan klasserna, så det finns metodöverstyrning.
//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 } }Testa det nu
Produktion:
Bike is running safely
Ett verkligt exempel på Java Method Overriding
Tänk på ett scenario där Bank är en klass som tillhandahåller funktionalitet för att få räntan. Räntesatsen varierar dock beroende på banker. Till exempel kan SBI-, ICICI- och AXIS-banker ge 8 %, 7 % och 9 % ränta.
Överstyrning av Java-metoder används mest i Runtime Polymorphism som vi kommer att lära oss på nästa sidor.
//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()); } }Testa det nu
Output: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9
Kan vi åsidosätta den statiska metoden?
Nej, en statisk metod kan inte åsidosättas. Det kan bevisas med runtime polymorfism, så vi kommer att lära oss det senare.
Varför kan vi inte åsidosätta statisk metod?
Det beror på att den statiska metoden är bunden till klass medan instansmetoden är bunden till ett objekt. Statisk tillhör klassområdet och en instans tillhör högområdet.
Kan vi åsidosätta java huvudmetod?
Nej, eftersom den huvudsakliga är en statisk metod.
Skillnad mellan metodöverbelastning och metodöverstyrning i java
Klicka på mig för skillnaden mellan metodöverbelastning och åsidosättande
Fler ämnen om metodöverskridande (inte för nybörjare)
Metodöverstyrning med åtkomstmodifierareLåt oss se konceptet med metodöverstyrning med åtkomstmodifierare.
Undantagshantering med metodöverstyrningLåt oss se konceptet med metodöverskridande med undantagshantering.