Heim >Backend-Entwicklung >C++ >Virtuell vs. neu in C#: Wann sollten Basisklassenmethoden überschrieben oder ausgeblendet werden?
Die Verwendung von virtuellen und neuen Schlüsselwörtern im C#
In der Objekt -orientierten Programmierung werden diese Methoden normalerweise in der Basisklasse definiert, und diese Methoden werden in der Derivatklasse neu geschrieben oder neu definiert. Obwohl sowohl "virtuelle" als auch "neue" Schlüsselwörter verwendet werden können, um die Methodenerklärung zu ändern, haben sie unterschiedliche Implementierungsmethoden.
Virtuelles Umschreiben
Die Methode der Methode in der Basisklasse ist "virtuell", was darauf hinweist, dass Unterklassen neu geschrieben werden können.
Geben Sie eine neue Methode der gleichnamigen Stiftung in der abgeleiteten Klasse an.
verstecken die Basisklassenmethode und erstellen Sie eine neue Implementierung in der abgeleiteten Klasse.Wenn wir eine Instanz von abgeleitetem Erstellen erstellen und in der Variablen des Basistyps speichern, ruft der Aufruf für DoSomething () die Umschreibungsmethode in der abgeleiteten:
auf:
<code class="language-csharp">public class Base { public virtual bool DoSomething() { return false; } } public class Derived : Base { public override bool DoSomething() { return true; } }</code>Im Gegenteil, wenn wir das neue Keyword in abgeleiteten verwenden, wird der Aufruf für Dosen () eine neue Methode in der abgeleiteten Methode aufrufen.
<code class="language-csharp">Base a = new Derived(); a.DoSomething(); // 返回 true</code>Wann soll ich mit virtuellem und neuem
umschreiben
<code class="language-csharp">public class Derived : Base { public new bool DoSomething() { return true; } }</code>
<code class="language-csharp">Base a = new Derived(); a.DoSomething(); // 返回 true (Derived 中的新方法)</code>Verwenden Sie virtuell, um das Verhalten umzuschreiben und zu erweitern und gleichzeitig die Erbschaftskette aufrechtzuerhalten.
Verwenden Sie neu, um eine neue, unabhängige Implementierung zu erstellen, wodurch die Erbschaftskette zerstört wird.
Das obige ist der detaillierte Inhalt vonVirtuell vs. neu in C#: Wann sollten Basisklassenmethoden überschrieben oder ausgeblendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!