You are on page 1of 5

OOP

10. 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 obezedi 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.

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.

class Vehicle
{
void run()
{
System.out.println("Vehicle is running");
}
}

class Bike2 extends Vehicle


{
void run()
{
System.out.println("Bike is running");
}

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 primer: 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 obezbijediti 8%, 7% i 9% kamatne stope.

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.

Zašto se statička metoda ne može preklopiti?

Zato što je statička metoda vezana za klasu dok je instansna metoda vezana za objekt.

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 metode Preklapanje metode


Preklapanje metode se koristi da
Preopterećenje metode se koristi da obezbedi specifičnu implementaciju
poboljša čitljivost programa metode koju je već obezbedila njena
superklasa
Preopterećenje metode se izvodi unutar Preklapanje metode se javlja u dve klase
klase koje imaju IS-A relaciju
U slučaju preopterećenja metode parametar U slučaju preklapanja metode parametar
mora biti različit mora biti isti

You might also like