Junior
Када се метод сматра да је преоптерећен (overriding)?
sobes.tech АИ
Одговор од АИ
Metod se smatra prepisanim kada u podklasi bude deklarovana metoda sa istom potpisom (ime metode, broj i tipovi parametara u istom redosledu) kao i u roditeljskoj klasi. Pored toga:
- Metod u roditeljskoj klasi ne sme biti deklarisan kao
final(ili ekvivalentni modifikator u drugim jezicima), što onemogućava prepisivanje. - Nivo pristupa prepisane metode u podklasi ne može biti restriktivniji od onog u roditeljskoj klasi.
- Prepisana metoda može vraćati isti tip kao i metoda u roditeljskoj klasi ili kovarijantni tip (podtip originalnog tipa).
- Prepisana metoda ne sme bacati izuzetke koji su opštiji (ili nekompatibilni) od izuzetaka deklarisanih u roditeljskoj metodi.
- Statičke metode ne mogu biti prepisane, samo skrivene (hidden).
Prilikom poziva prepisane metode putem reference na roditeljsku klasu, ali sa objektom podklase, izvršava se verzija metode iz podklase (polimorfizam).
// Primer na Javi
class Parent {
public void display() { // Metoda u roditeljskoj klasi
System.out.println("Parent display");
}
// final void cannotOverride() { ... } // Ovu metodu nije moguće prepisati
}
class Child extends Parent {
@Override // Anotacija @Override pomaže kompilatoru da proveri da li je metoda zaista prepisana
public void display() { // Prepisana metoda - ista potpis
System.out.println("Child display");
}
}