Junior
Mikor számít egy módszer felülírtnak (overriding)?
sobes.tech MI
Válasz az MI-től
Egy metódus akkor számít felülírtnak, amikor egy leszármazott osztályban ugyanazzal a szignatúrával (metódus neve, paraméterek száma és típusa ugyanabban a sorrendben) deklarálunk egy metódust, mint az ősosztályban. Emellett:
- Az ősosztályban lévő metódus nem lehet
final(vagy más nyelven ekvivalens módosító), ami megakadályozza a felülírást. - A felülírt metódus hozzáférési szintje nem lehet korlátozóbb, mint az ősosztályban lévőé.
- A felülírt metódus visszatérési típusa lehet ugyanaz, vagy kovariáns típus (az eredeti típus al-típusa).
- A felülírt metódus nem dobhat olyan kivételeket, amelyek általánosabbak (vagy inkompatibilisek) a ősosztályban deklaráltaknál.
- Statikus metódusokat nem lehet felülírni, csak elrejteni (hidden).
Amikor a felülírt metódust az ősosztályra mutató hivatkozással, de leszármazott objektummal hívjuk, akkor a leszármazott osztály verziója fut le (polimorfizmus).
// Java példa
class Parent {
public void display() { // Az ősosztályban lévő metódus
System.out.println("Parent display");
}
// final void cannotOverride() { ... } // Ezt a metódust nem lehet felülírni
}
class Child extends Parent {
@Override // Az @Override annotáció segít a fordítónak ellenőrizni, hogy a metódus valóban felülírásra került-e
public void display() { // Felülírt metódus - ugyanaz a szignatúra
System.out.println("Child display");
}
}