Heim > Backend-Entwicklung > C++ > Virtual/Override vs. NEU in C#: Wann sollte ich welches Schlüsselwort für die Überschreitung von Methoden verwenden?

Virtual/Override vs. NEU in C#: Wann sollte ich welches Schlüsselwort für die Überschreitung von Methoden verwenden?

Linda Hamilton
Freigeben: 2025-01-27 06:36:09
Original
432 Leute haben es durchsucht

Virtual/Override vs. New in C#: When Should I Use Which Keyword for Method Overriding?

Virtual/override vs. neues Schlüsselwort in C#: Wann sollte welches Schlüsselwort zum Überschreiben von Methoden verwendet werden?

Bei der Definition von Methoden in Basisklassen stehen Programmierer oft vor dem Dilemma, ob sie das Schlüsselwort „virtual“ oder „new“ verwenden sollen. Diese Entscheidung kann das Verhalten von Methodenüberschreibungen in abgeleiteten Klassen erheblich beeinflussen.

Virtuelle Überschreibung

Die Verwendung des Schlüsselworts „virtual“ in einer Basisklassenmethode zeigt an, dass es in einer abgeleiteten Klasse überschrieben werden kann. Um diese Methode zu überschreiben, müssen abgeleitete Klassen das Schlüsselwort „override“ verwenden. Dadurch wird sichergestellt, dass überschriebene Methoden wie erwartet funktionieren und Vererbungshierarchien und Polymorphismus beibehalten werden.

Wenn eine abgeleitete Klasse eine überschriebene Methode aufruft, führt sie die überschriebene Version aus, auch wenn die Referenzvariable, die das Objekt enthält, vom Typ der Basisklasse ist. Dies wird als späte Bindung bezeichnet und ermöglicht dynamisches Verhalten.

Neues Schlüsselwort

Im Gegensatz dazu deklariert das Schlüsselwort „new“ in einer abgeleiteten Klassenmethode eine neue Methode, die die geerbte Methode mit demselben Namen verbirgt. Bei Verwendung ersetzt die neue Methode die geerbte Methode in der abgeleiteten Klasse und unterbricht so den Polymorphismus.

Wenn eine abgeleitete Klasse eine mit „new“ deklarierte Methode aufruft, führt sie die neue Methode unabhängig vom Typ der Referenzvariablen aus, die das Objekt enthält. Dies gilt als frühe Bindung und verhindert den Polymorphismus.

Beispiel

Betrachten Sie das folgende Codebeispiel:

<code class="language-csharp">public class Base
{
    public virtual bool DoSomething() { return false; }
}

public class Derived : Base
{
    public new bool DoSomething() { return true; }
}</code>
Nach dem Login kopieren

Wenn Sie einer Variablen vom Typ Base eine Instanz von Derived zuweisen und DoSomething() aufrufen, ist das Ergebnis false, wenn virtual/override verwendet wird, aber true, wenn new verwendet wird. Dies verdeutlicht den Unterschied zwischen später Bindung und früher Bindung.

Das obige ist der detaillierte Inhalt vonVirtual/Override vs. NEU in C#: Wann sollte ich welches Schlüsselwort für die Überschreitung von Methoden verwenden?. 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