logo

Metodeoverstyring i Java

  1. Forstå problemet uten å overstyre metoden
  2. Kan vi overstyre den statiske metoden
  3. Metodeoverbelastning vs. metodeoverstyring

Hvis underklassen (barneklassen) har samme metode som deklarert i overordnet klasse, er den kjent som metodeoverstyring i Java .

Med andre ord, hvis en underklasse gir den spesifikke implementeringen av metoden som har blitt erklært av en av dens overordnede klasse, er det kjent som metodeoverstyring.

Bruk av Java-metodeoverstyring

  • Metodeoverstyring brukes til å gi den spesifikke implementeringen av en metode som allerede er levert av superklassen.
  • Metodeoverstyring brukes for kjøretidspolymorfisme

Regler for Java-metodeoverstyring

  1. Metoden må ha samme navn som i overordnet klasse
  2. Metoden må ha samme parameter som i overordnet klasse.
  3. Det må være et IS-A forhold (arv).
Java-regler for metodeoverstyring

Forstå problemet uten å overstyre metoden

La oss forstå problemet som vi kan møte i programmet hvis vi ikke bruker metodeoverstyring.

 //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(); } } 
Test det nå

Produksjon:

distributiv lov boolsk algebra
 Vehicle is running 

Problemet er at jeg må gi en spesifikk implementering av run()-metoden i underklassen, det er derfor vi bruker metodeoverstyring.


Eksempel på metodeoverstyring

I dette eksemplet har vi definert kjøremetoden i underklassen som definert i den overordnede klassen, men den har en spesifikk implementering. Navnet og parameteren til metoden er de samme, og det er IS-A-forhold mellom klassene, så det er metodeoverstyring.

 //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 } } 
Test det nå

Produksjon:

 Bike is running safely 

Et ekte eksempel på Java-metodeoverstyring

Tenk på et scenario der Bank er en klasse som gir funksjonalitet for å få rentesatsen. Imidlertid varierer renten avhengig av banker. For eksempel kan SBI-, ICICI- og AXIS-banker gi 8 %, 7 % og 9 % rente.

Java-metode overstyrende eksempel på bank

Java-metodeoverstyring brukes mest i Runtime Polymorphism som vi vil lære på neste sider.

 //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()); } } 
Test det nå
 Output: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9 

Kan vi overstyre statisk metode?

Nei, en statisk metode kan ikke overstyres. Det kan bevises med runtime polymorfisme, så vi vil lære det senere.


Hvorfor kan vi ikke overstyre statisk metode?

Det er fordi den statiske metoden er bundet til klasse mens instansmetoden er bundet til et objekt. Statisk tilhører klasseområdet, og en forekomst tilhører heapområdet.


Kan vi overstyre java-hovedmetoden?

Nei, fordi det viktigste er en statisk metode.

strint til int

Forskjellen mellom metodeoverbelastning og metodeoverstyring i java

Klikk meg for forskjellen mellom metodeoverbelastning og overstyring


Flere emner om metodeoverstyring (ikke for nybegynnere)

Metodeoverstyring med Access Modifier

La oss se konseptet med metodeoverstyring med tilgangsmodifikator.

Unntakshåndtering med metodeoverstyring

La oss se konseptet med metodeoverstyring med unntakshåndtering.