Sobes.tech
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:

  1. 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.
  2. A felülírt metódus hozzáférési szintje nem lehet korlátozóbb, mint az ősosztályban lévőé.
  3. 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).
  4. A felülírt metódus nem dobhat olyan kivételeket, amelyek általánosabbak (vagy inkompatibilisek) a ősosztályban deklaráltaknál.
  5. 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");
    }
}