- Ongelman ymmärtäminen ilman menetelmän ohittamista
- Voimmeko ohittaa staattisen menetelmän
- Menetelmän ylikuormitus vs. menetelmän ohittaminen
Jos alaluokalla (lapiluokalla) on sama menetelmä kuin pääluokassa, se tunnetaan nimellä menetelmän ohittaminen Javassa .
Toisin sanoen, jos alaluokka tarjoaa menetelmän tietyn toteutuksen, jonka jokin sen emoluokka on ilmoittanut, sitä kutsutaan menetelmän ohitukseksi.
Java Method Overridingin käyttö
- Method overriding -menetelmää käytetään tarjoamaan menetelmän tietty toteutus, jonka sen superluokka jo tarjoaa.
- Menetelmän ohitusta käytetään ajonaikaiseen polymorfismiin
Java-menetelmän ohituksen säännöt
- Metodilla on oltava sama nimi kuin pääluokassa
- Metodilla on oltava sama parametri kuin pääluokassa.
- On oltava IS-A-suhde (perintö).
Ongelman ymmärtäminen ilman menetelmän ohittamista
Ymmärrämme ongelman, jonka saatamme kohdata ohjelmassa, jos emme käytä menetelmän ohittamista.
//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(); } }Testaa nyt
Lähtö:
Vehicle is running
Ongelmana on, että minun on tarjottava erityinen run()-menetelmän toteutus alaluokassa, minkä vuoksi käytämme menetelmän ohittamista.
Esimerkki menetelmän ohittamisesta
Tässä esimerkissä olemme määritelleet aliluokassa run-metodin, joka on määritelty pääluokassa, mutta sillä on tietty toteutus. Metodin nimi ja parametri ovat samat, ja luokkien välillä on IS-A-suhde, joten menetelmän ohittaminen on olemassa.
//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 } }Testaa nyt
Lähtö:
Bike is running safely
Todellinen esimerkki Java Method Overridingista
Harkitse skenaariota, jossa Pankki on luokka, joka tarjoaa toimintoja koron saamiseksi. Korkotaso vaihtelee kuitenkin pankeittain. Esimerkiksi SBI-, ICICI- ja AXIS-pankit voisivat tarjota 8 %, 7 % ja 9 % korkoa.
Java-menetelmän ohittamista käytetään enimmäkseen Runtime Polymorphismissa, josta opimme seuraavilla sivuilla.
//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()); } }Testaa nyt
Output: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9
Voimmeko ohittaa staattisen menetelmän?
Ei, staattista menetelmää ei voi ohittaa. Se voidaan todistaa ajonaikaisella polymorfismilla, joten opimme sen myöhemmin.
Miksi emme voi ohittaa staattista menetelmää?
Tämä johtuu siitä, että staattinen menetelmä on sidottu luokkaan, kun taas ilmentymämenetelmä on sidottu objektiin. Static kuuluu luokka-alueelle ja ilmentymä kasa-alueelle.
Voimmeko ohittaa Java-päämenetelmän?
Ei, koska päämenetelmä on staattinen.
Ero menetelmän ylikuormituksen ja menetelmän ohituksen välillä javassa
Napsauta minua nähdäksesi eron menetelmän ylikuormituksen ja ohituksen välillä
Lisää aiheita menetelmän ohittamisesta (ei aloittelijoille)
Menetelmän ohittaminen Access ModifierillaKatsotaanpa menetelmän ohittaminen käyttöoikeusmuuntimella.
Poikkeuskäsittely menetelmän ohituksellaKatsotaanpa menetelmän ohittaminen poikkeuskäsittelyllä.