logo

Menetelmän ohittaminen Javassa

  1. Ongelman ymmärtäminen ilman menetelmän ohittamista
  2. Voimmeko ohittaa staattisen menetelmän
  3. 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

  1. Metodilla on oltava sama nimi kuin pääluokassa
  2. Metodilla on oltava sama parametri kuin pääluokassa.
  3. On oltava IS-A-suhde (perintö).
Java-säännöt menetelmän ohittamiseksi

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 ohittava esimerkki pankista

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 Modifierilla

Katsotaanpa menetelmän ohittaminen käyttöoikeusmuuntimella.

Poikkeuskäsittely menetelmän ohituksella

Katsotaanpa menetelmän ohittaminen poikkeuskäsittelyllä.