Junior
Када се метод сматра да је преформулисан?
sobes.tech АИ
Одговор од АИ
Metod se smatra prepisanim u sledećim slučajevima:
- Deklarisan je u podklasi.
- Ima isto ime kao metoda u roditeljskoj klasi.
- Ima istu potpis (broj i tipove parametara) i redosled parametara.
- Ima tip povratne vrednosti kompatibilan sa tipom povratne vrednosti metode u roditeljskoj klasi (kovarijantnost, ako je primenjivo).
- Ima isti ili širi modifikator pristupa od metode u roditeljskoj klasi (u većini objektno-orijentisanih jezika).
- Roditeljska metoda je deklarisana kao virtuelna, apstraktna ili interfejs (u jezicima koji zahtevaju eksplicitno označavanje mogućnosti prepisivanja, na primer C# sa ključnom rečju
virtual).
Primer u Javi:
// Roditeljska klasa
class SuperClass {
// Metod koji može biti prepisan
public void display() {
System.out.println("Ovo je display metod SuperClass.");
}
}
// Potklasa
class SubClass extends SuperClass {
// Prepisani display metod
@Override // Anotacija za proveru prepisivanja tokom kompilacije
public void display() {
System.out.println("Ovo je display metod SubClass.");
}
}
Primer u Pythonu:
# Roditeljska klasa
class SuperClass:
# Metod koji može biti prepisan
def display(self):
print("Ovo je display metod SuperClass.")
# Potklasa
class SubClass(SuperClass):
# Prepisani display metod
def display(self):
print("Ovo je display metod SubClass.")
Ključ je da se sačuva ime i potpis metode, ali da se promeni njegovo ponašanje u potklasi.
Važna razlika u odnosu na overloading:
Overloading je deklaracija više metoda istog imena u istoj klasi, ali sa različitim potpisima. Overriding je deklaracija metode u potklasi sa istim imenom i potpisom kao u roditeljskoj klasi.