Preklapanje (overriding) metoda u Javi

Ako podklasa (klasa-dete) ima isti metod kakav je deklarisan u roditeljskoj klasi, to je poznato kao preklapanje (overriding) metoda u javi.Drugim rečima, ako podklasa obezbeđuje specifičnu implementaciju metode koju je obezbedila jedna od roditeljskih klasa, to je poznato kao preklapanje metoda.Upotreba preklapanja metoda:
  • Preklapanje metoda se koristi da obezbedi specifičnu implementaciju metode koja je već obezbeđena preko svoje superklase.
  • Preklapanje metoda se koristi za polimorfizam u vremenu izvršavanja.
Pravila za preklapanje metoda
  1. metoda mora imati isto ime kao u roditeljskoj klasi.
  2. metoda mora imati isti parametar kao u roditeljskoj klasi.
  3. mora biti IS-A relacija (nasleđivanje).

Bez preklapanja metoda

Problem koji se javlja bez preklapanja metoda Razmotrimo problem koji se javlja u programu ako ne koristimo preklapanje metode.
1
2
3
4
5
6
7
8
9
10
11
12
13
class Vehicle{
  void run(){System.out.println("Vehicle is running");}
}
class Bike extends Vehicle{
  
  public static void main(String args[]){
  Bike obj = new Bike();
  obj.run();
  }
}
Ispis na ekranu:
Vehicle is running
Problem je u tome da moramo obezbediti specifičnu implementaciju metode run() u podklasi, te stoga koristimo preklapanje metoda.

Preklapanje metoda

Primer 1 preklapanja metoda U ovom primeru, definisaćemo metodu run u podklasi onako kako je definisana u roditeljskoj klasi ali će imati neku specifičnu implementaciju. Ime i parametar metode su isti i postoji IS-A relacija između klasa, tako da postoji preklapanje metoda.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Vehicle{ 
void run(){System.out.println("Vehicle is running");} 
class Bike2 extends Vehicle{ 
  void run(){System.out.println("Bike is running safely");} 
  public static void main(String args[]){ 
  Bike2 obj = new Bike2(); 
  obj.run(); 
  }
}
Ispis na ekranu:
Bike is running safely
Primer 2 preklapanja metoda Razmotrimo sledeći scenario: Bank je klasa koja obezbeđuje funkcionalnost izračunavanja kamatne stope. Ali, kamatna stopa varira u zavisnosti od banke. Na primer, banke FIRST, SECOND i THIRD mogu obezbediti 8%, 7% i 9% kamatne stope.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Bank{ 
  int getRateOfInterest(){return 0;} 
  
class FIRST extends Bank{ 
  int getRateOfInterest(){return 8;} 
  
class SECOND extends Bank{ 
  int getRateOfInterest(){return 7;} 
class THIRD extends Bank{ 
  int getRateOfInterest(){return 9;} 
  
class Test2{
  public static void main(String args[]){ 
  FIRST s=new FIRST(); 
  SECOND i=new SECOND(); 
  THIRD a=new THIRD(); 
  System.out.println("FIRST Rate of Interest: "+s.getRateOfInterest()); 
  System.out.println("SECOND Rate of Interest: "+i.getRateOfInterest()); 
  System.out.println("THIRD Rate of Interest: "+a.getRateOfInterest()); 
  
}
Ispis na ekranu:
FIRST Rate of Interest: 8
SECOND Rate of Interest: 7
THIRD Rate of Interest: 9
Može li se preklopiti statička metoda? Ne, statička metoda se ne može preklopiti. O ovome će biti reči kasnije, u delu koji se odnosi na polimorfizam u vremenu izvršavanja. Zašto se statička metoda ne može preklopiti? Zato što je statička metoda vezana za klasu, dok je instancna metoda vezana za objekat. Može li se preklopiti java main metoda? Ne, zato što je main statička metoda. Razlika između preopterećenja metode i preklapanja metode u Javi Postoje tri osnovne razlike između preopterećenja metode i preklapanja metode. To su:
Preopterećenje metodePreklapanje metode
Preopterećenje metode se koristi da poboljša čitljivost programaPreklapanje metode se koristi da obezbedi specifičnu implementaciju metode koju je već obezbedila njena superklasa
Preopterećenje metode se izvodi unutar klasePreklapanje metode se javlja u dve klase koje imaju IS-A relaciju
U slučaju preopterećenja metode parametar mora biti različitU slučaju preklapanja metode parametar mora biti isti

Comments

comments