Was ist die Methode Overriding?

Das Überschreiben von Methoden wird in der objektorientierten Programmierung innerhalb einer Vererbungshierarchie verwendet und tritt auf, wenn eine in einer Oberklasse definierte Methode in einer Unterklasse neu definiert wird. Normalerweise unterscheidet sich die Unterklassenmethode von der Superklassenmethode oder erweitert eine Funktion der Superklasse, dies muss jedoch nicht der Fall sein. Das Überschreiben von Methoden erfolgt immer dann, wenn eine Oberklassenmethode in einer Unterklasse neu definiert wird, unabhängig vom Inhalt der neu definierten Methode. Die neu definierten Methodensignaturen müssen exakt gleich sein.

Eine Klasse A kann beispielsweise eine Methode mit dem Namen "doSomething" enthalten, und diese Methode akzeptiert keine Eingabeparameter. Außerdem können die Klassen B und C Unterklassen der Klasse A sein. Die Klasse B enthält möglicherweise eine Methode namens "doSomething", die keine Eingabeparameter akzeptiert, und die Klasse C enthält möglicherweise eine Methode "doSomething", die eine Zahl als Eingabeparameter akzeptiert. In diesem Beispiel würde nur Klasse B das Überschreiben von Methoden demonstrieren, da die Methode "doSomething" dieselbe Methodensignatur wie die Oberklasse "Klasse A" hat. Die Methode "doSomething" in Klasse C demonstriert dagegen das Überladen von Methoden, da sie erstellt eine völlig neue methode.

Die virtuelle Vererbung in C ++ ist ein weiteres Beispiel für das Überschreiben von Methoden. Virtuelle Methoden in Superklassen können implementiert sein oder nicht, aber jede Unterklassendefinition von ihnen ist eine Instanz des Überschreibens von Methoden. Wenn eine Methode in einer Unterklasse überschrieben wird, wird die Methode der Oberklasse nur aufgerufen, wenn sie explizit aufgerufen wird. Diese spezielle Art, eine überschriebene Methode aufzurufen, soll die Implementierung der Oberklasse oft "verbergen".

Obwohl das Überschreiben von Methoden sehr flexibel ist, können nicht alle Methoden überschrieben werden, und es gibt Zeiten, in denen diese Starrheit vorzuziehen ist. Sowohl in Java als auch in C ++ können bestimmte Schlüsselwörter in Methodensignaturen angewendet werden, um zu verhindern, dass eine Methode in einer Unterklasse überschrieben wird. Dazu verwendet Java das Schlüsselwort "final" und C ++ das Schlüsselwort "const". Das Verhindern des Überschreibens von Methoden kann hilfreich sein, wenn eine bestimmte Funktion in einem Vererbungsbaum immer unverändert bleiben soll.

Im Allgemeinen sollten einfache Methoden, mit denen kleine Datenmengen abgerufen werden, nicht überschrieben werden müssen. Fälle, die am meisten vom Überschreiben profitieren, sind, wenn eine Unterklasse einer übergeordneten Methode Funktionen hinzufügen möchte, ohne dafür eine völlig neue Methode zu erstellen. Ungewöhnliche Fälle, in denen eine Methode für einen bestimmten Objekttyp vollständig überarbeitet werden muss, können ebenfalls von dieser Technik profitieren. Wann immer eine Methode überschrieben wird, ist es für den Programmierer wichtig, sowohl die Oberklassen- als auch die Unterklassenmethode angemessen zu kommentieren. Im Idealfall sollten diese Kommentare klarstellen, was jede Variante der Methode tut und wie und warum sie sich unterscheiden.

ANDERE SPRACHEN

War dieser Artikel hilfreich? Danke für die Rückmeldung Danke für die Rückmeldung

Wie können wir helfen? Wie können wir helfen?