Heim > Backend-Entwicklung > C++ > Wie rufe ich eine Basisklassenmethode direkt auf und umgehe Zwischenüberschreibungen?

Wie rufe ich eine Basisklassenmethode direkt auf und umgehe Zwischenüberschreibungen?

Patricia Arquette
Freigeben: 2025-01-01 12:14:10
Original
1009 Leute haben es durchsucht

How to Call a Base Class Method Directly, Bypassing Intermediate Overrides?

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.");
    }
}
Nach dem Login kopieren

Wenn Sie nun sd.Say() aufrufen, lautet das Ergebnis:

Called from Special Derived.
Called from Base.
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage