Junior
Mikor számít egy módszer felülírtnak?
sobes.tech MI
Válasz az MI-től
A módszer a következő esetekben számít felülírtnak:
- Egy származtatott osztályban van deklarálva.
- Ugyanazzal a névvel rendelkezik, mint a szülőosztályban lévő módszer.
- Ugyanazzal a szignatúrával (paraméterek száma és típusa) és paraméter sorrenddel rendelkezik.
- Olyan visszatérési típussal rendelkezik, amely kompatibilis a szülőosztálybeli módszer visszatérési típusával (kovariancia, ha alkalmazható).
- Ugyanazzal vagy szélesebb hozzáférési módosítóval rendelkezik, mint a szülőosztálybeli módszer (a legtöbb objektumorientált nyelvben).
- A szülőosztálybeli módszer virtuális, absztrakt vagy interfészként van deklarálva (az olyan nyelvekben, amelyek megkövetelik a felülírás lehetőségének kifejezett jelölését, például C#-ban a
virtualkulcsszóval).
Java példával:
// Szülőosztály
class SuperClass {
// Olyan módszer, amely felülírható
public void display() {
System.out.println("Ez a SuperClass display metódusa.");
}
}
// Származtatott osztály
class SubClass extends SuperClass {
// Felülírt display metódus
@Override // Ellenőrzés a fordítási időben
public void display() {
System.out.println("Ez a SubClass display metódusa.");
}
}
Python példával:
# Szülőosztály
class SuperClass:
# Olyan módszer, amely felülírható
def display(self):
print("Ez a SuperClass display metódusa.")
# Származtatott osztály
class SubClass(SuperClass):
# Felülírt display metódus
def display(self):
print("Ez a SubClass display metódusa.")
A kulcs az, hogy megőrizzük a módszer nevét és szignatúráját, de megváltoztatjuk a viselkedését a származtatott osztályban.
Fontos különbség az overloading-tól:
Az overloading több metódus deklarálását jelenti ugyanazzal a névvel egy osztályban, de különböző szignatúrákkal. Az overriding pedig egy módszer deklarálását jelenti egy származtatott osztályban ugyanazzal a névvel és szignatúrával, mint a szülőosztályban.