Basismethode direkt aufrufen
In OOP ist der Zugriff auf Basisklassenmethoden innerhalb abgeleiteter Klassen für das Überschreiben von Methoden unerlässlich. Es stellt sich jedoch die Frage: „Wie können wir die Basismethode der Basis aufrufen und dabei alle Zwischenüberschreibungen umgehen?“
Um den unerwünschten Aufruf von Derived.Say() in der SpecialDerived-Klasse zu vermeiden, kann der ursprüngliche Quellcode nicht verwendet werden geändert. Es gibt jedoch eine Problemumgehung. Durch die Einführung einer neuen Methode, CustomSay(), in der Derived-Klasse und deren Überschreibung in SpecialDerived können wir das Standardverhalten umleiten und gleichzeitig die vorhandene Say()-Methode beibehalten.
Hier ist der geänderte Code:
// Cannot change source code class Derived : Base { public override void Say() { CustomSay(); base.Say(); } protected virtual void CustomSay() { Console.WriteLine("Called from Derived."); } } class SpecialDerived : Derived { protected override void CustomSay() { Console.WriteLine("Called from Special Derived."); } }
Wenn Sie nun sd.Say() aufrufen, lautet das Ergebnis:
Called from Special Derived. Called from Base.
Die Verwendung von a Die neue Methode CustomSay() ermöglicht die Anpassung, ohne die überschriebene Say()-Methode zu ändern. Allerdings wird generell davon abgeraten, auf Basismethoden jenseits der ersten Ebene zuzugreifen, da dies zu Verwirrung und Wartungsproblemen führen kann.
Das obige ist der detaillierte Inhalt vonWie rufe ich eine Basisklassenmethode direkt auf und umgehe Zwischenüberschreibungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!