Sobes.tech
Junior

Mikor történik a metódus felülírása (overriding)?

sobes.tech MI

Válasz az MI-től

A metódus felülírása (overriding) akkor történik az öröklődési hierarchiában, amikor az alosztály saját megvalósítást ad egy olyan metódusnak, amely már definiálva van a szülőosztályban ugyanazzal a névvel, szignatúrával (a paraméterek típusának és számának egyezésével) és visszatérési típussal (vagy kovariáns típusú az objektum visszatérési típus esetén).

Fő jellemzők:

  • Öröklődés: A felülírás csak öröklődés kontextusában lehetséges (szülő- és alosztályok).
  • Szignatúra: Az alosztályban lévő metódusnak ugyanazzal a szignatúrával kell rendelkeznie (név, paraméterek száma és típusa), mint a szülőosztályban lévő metódusnak, és ugyanazzal a visszatérési típussal (vagy annak kovariáns altípusával).
  • Hozzáférhetőség: A felülírt metódusnak elérhetőnek kell lennie az alosztály számára (általában public, protected).
  • Polimorfizmus: A felülírás a futási idő polimorfizmusának alapja, lehetővé téve, hogy az alosztály objektumai saját módjukon reagáljanak a metódushívásra, még akkor is, ha szülőosztályra mutató hivatkozással hívják őket.

Példa (Java):

// Szülőosztály
class Animal {
    // Metódus, amely felülíródik
    public void makeSound() {
        System.out.println("Állat hangot ad");
    }
}

// Alosztály
class Dog extends Animal {
    // A makeSound() metódus felülírása
    @Override // Az @Override annotáció opcionális, de ajánlott
    public void makeSound() {
        System.out.println("Kutya ugat");
    }
}

Használati példa:

// Dog objektum létrehozása
Animal myDog = new Dog();
// A metódus hívása. A Dog-ban felülírt verzió fog lefutni
myDog.makeSound(); // Kimenet: Kutya ugat

// Animal objektum létrehozása
Animal someAnimal = new Animal();
// A metódus hívása. Az Animal verzió fog lefutni
someAnimal.makeSound(); // Kimenet: Állat hangot ad