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

  1. Egy származtatott osztályban van deklarálva.
  2. Ugyanazzal a névvel rendelkezik, mint a szülőosztályban lévő módszer.
  3. Ugyanazzal a szignatúrával (paraméterek száma és típusa) és paraméter sorrenddel rendelkezik.
  4. 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ó).
  5. 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).
  6. 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 virtual kulcsszó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.