Junior
Wann gilt eine Methode als überschrieben (overriding)?
sobes.tech KI
Antwort von AI
Eine Methode gilt als überschrieben, wenn in einer Kindklasse eine Methode mit der gleichen Signatur (Methodenname, Anzahl und Typen der Parameter in der gleichen Reihenfolge) wie in der Elternklasse deklariert wird. Dabei gilt:
- Die Methode in der Elternklasse darf nicht als
final(oder einem äquivalenten Modifikator in anderen Sprachen) deklariert sein, der das Überschreiben verbietet. - Der Zugriffslevel der überschriebenen Methode in der Kindklasse darf nicht restriktiver sein als in der Elternklasse.
- Die überschreibende Methode kann den gleichen Typ wie die Methode in der Elternklasse zurückgeben oder einen kovarianten Typ (Subtyp des Originaltyps).
- Die überschreibende Methode darf keine Ausnahmen werfen, die allgemeiner (oder inkompatibel) sind als die in der Elternmethode deklarierten Ausnahmen.
- Statische Methoden können nicht überschrieben, nur versteckt (hidden) werden.
Beim Aufruf der überschriebenen Methode über eine Referenz auf die Elternklasse, aber mit einem Objekt der Kindklasse, wird die Version der Kindklasse ausgeführt (Polymorphismus).
// Beispiel in Java
class Parent {
public void display() { // Methode in der Elternklasse
System.out.println("Parent display");
}
// final void cannotOverride() { ... } // Diese Methode kann nicht überschrieben werden
}
class Child extends Parent {
@Override // Die Annotation @Override hilft dem Compiler zu prüfen, ob die Methode tatsächlich überschrieben wird
public void display() { // Überschriebene Methode - gleiche Signatur
System.out.println("Child display");
}
}