logo

Nadjačavanje metode u Javi

  1. Razumijevanje problema bez nadjačavanja metode
  2. Možemo li nadjačati statičku metodu
  3. Preopterećenje metode u odnosu na nadjačavanje metode

Ako podklasa (klasa dijete) ima istu metodu kao što je deklarirana u roditeljskoj klasi, poznata je kao nadjačavanje metode u Javi .

Drugim riječima, ako podklasa pruža specifičnu implementaciju metode koju je deklarirala jedna od njezinih nadređenih klasa, to je poznato kao nadjačavanje metode.

Korištenje nadjačavanja Java metode

  • Nadjačavanje metode koristi se za pružanje specifične implementacije metode koju već nudi njezina superklasa.
  • Nadjačavanje metode koristi se za polimorfizam vremena izvođenja

Pravila za nadjačavanje Java metode

  1. Metoda mora imati isto ime kao u nadređenoj klasi
  2. Metoda mora imati isti parametar kao u roditeljskoj klasi.
  3. Mora postojati odnos IS-A (nasljeđivanje).
Java pravila za nadjačavanje metoda

Razumijevanje problema bez nadjačavanja metode

Hajdemo razumjeti problem s kojim se možemo suočiti u programu ako ne koristimo nadjačavanje metode.

 //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(); } } 
Testirajte sada

Izlaz:

 Vehicle is running 

Problem je u tome što moram osigurati specifičnu implementaciju metode run() u potklasi i zato koristimo nadjačavanje metode.


Primjer nadjačavanja metode

U ovom smo primjeru definirali metodu pokretanja u podklasi kako je definirana u nadređenoj klasi, ali ima neku specifičnu implementaciju. Ime i parametar metode su isti, a postoji IS-A odnos između klasa, tako da postoji nadjačavanje metode.

 //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 } } 
Testirajte sada

Izlaz:

 Bike is running safely 

Pravi primjer nadjačavanja Java metode

Razmotrite scenarij u kojem je banka klasa koja pruža funkcionalnost za dobivanje kamatne stope. Međutim, kamatna stopa varira ovisno o banci. Na primjer, SBI, ICICI i AXIS banke mogu ponuditi kamatu od 8%, 7% i 9%.

Primjer nadjačavanja Java metode banke

Nadjačavanje Java metode uglavnom se koristi u polimorfizmu vremena izvođenja što ćemo naučiti na sljedećim stranicama.

 //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()); } } 
Testirajte sada
 Output: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9 

Možemo li nadjačati statičku metodu?

Ne, statička metoda ne može se nadjačati. Može se dokazati polimorfizmom vremena izvođenja, pa ćemo to naučiti kasnije.


Zašto ne možemo nadjačati statičku metodu?

To je zato što je statička metoda vezana za klasu dok je metoda instance vezana za objekt. Statika pripada području klase, a instanca pripada području gomile.


Možemo li nadjačati Java main metodu?

Ne, jer je glavna statična metoda.


Razlika između preopterećenja metode i nadjačavanja metode u Javi

Kliknite me za razliku između preopterećenja i nadjačavanja metode


Više tema o nadjačavanju metode (nije za početnike)

Nadjačavanje metode modifikatorom pristupa

Pogledajmo koncept nadjačavanja metode modifikatorom pristupa.

Rukovanje iznimkama s nadjačavanjem metode

Pogledajmo koncept nadjačavanja metode s rukovanjem iznimkama.