Sobes.tech
Junior

Wann findet das Überschreiben einer Methode (overriding) statt?

sobes.tech KI

Antwort von AI

Methodenüberschreibung (Overriding) tritt in der Vererzungshierarchie auf, wenn eine Unterklasse ihre eigene Implementierung einer Methode bereitstellt, die bereits in der Elternklasse mit demselben Namen, derselben Signatur (Übereinstimmung im Typ und in der Anzahl der Parameter) und dem Rückgabetyp (oder kovariant im Falle des Rückgabetyps) definiert ist.

Wichtige Merkmale:

  • Vererbung: Überschreibung ist nur im Kontext der Vererbung möglich (Eltern- und Kindklassen).
  • Signatur: Die Methode in der Kindklasse muss dieselbe Signatur haben (Name, Anzahl und Typen der Parameter) und den gleichen Rückgabetyp (oder dessen kovariante Untertyp) wie die Methode in der Elternklasse.
  • Zugänglichkeit: Die überschreibende Methode muss für die Kindklasse zugänglich sein (normalerweise public, protected).
  • Polymorphismus: Überschreibung ist die Grundlage des Laufzeitpolymorphismus, der es Objekten der Kindklasse ermöglicht, auf Methodenaufrufe auf eigene Weise zu reagieren, auch wenn sie über eine Referenz auf die Elternklasse angesprochen werden.

Beispiel (Java):

// Elternklasse
class Animal {
    // Methode, die überschrieben wird
    public void makeSound() {
        System.out.println("Tier macht ein Geräusch");
    }
}

// Kindklasse
class Dog extends Animal {
    // Überschreibung der Methode makeSound()
    @Override // Die Annotation @Override ist optional, wird aber empfohlen
    public void makeSound() {
        System.out.println("Hund bellt");
    }
}

Anwendungsbeispiel:

// Erstellen eines Dog-Objekts
Animal myDog = new Dog();
// Aufruf der Methode. Die überschreibende Version aus Dog wird aufgerufen
myDog.makeSound(); // Ausgabe: Hund bellt

// Erstellen eines Animal-Objekts
Animal someAnimal = new Animal();
// Aufruf der Methode. Die Version aus Animal wird aufgerufen
someAnimal.makeSound(); // Ausgabe: Tier macht ein Geräusch