Heim >Backend-Entwicklung >C++ >Was ist der Unterschied zwischen Schlüsselwörtern 'New' und 'Override' für Methoden in C#?
und new
override
In der Objekt -orientierten Programmierung ermöglicht die Vererbung die Funktion der Vererbung und Ausdehnung der Basisklasse. Bei der Definition von Methoden in Derivaten verwenden Entwickler häufig Keywords "neu" und "überschreiben". Obwohl diese beiden Schlüsselwörter ähnliche Effekte zu haben scheinen, ist ihr Zweck sehr unterschiedlich.
Situation 1:
Schlüsselwörter
new
Die Methode des Schlüsselworts repräsentiert die abgeleitete Klasse ist eine neue Methode, die nichts mit einer Methode in der Basisklasse zu tun hat. Auch wenn die Basisklasse den gleichen Namen hat, hat die -Methode eine separate Implementierung der abgeleiteten Klasse.
Situation 2: new
Schlüsselwörter new
Andererseits geben die Schlüsselwörter die Implementierung derselben Methode in der Basisklasse an. Der Compiler stellt sicher, dass die -Methode die neueste Implementierung der Erbschaftskette verwendet, auch wenn das Objekt durch die Basisklassenreferenz verwiesen wird.
override
Verhaltensunterschiede
und override
besteht darin, wie sie mit dem Methodenaufruf umgehen. Wenn die override
-Methode auf die Basisklassenreferenz aufgerufen wird, wird die Implementierung der Derivatklasse ausgeführt. Wenn die -Methode aufgerufen wird, wird die Implementierung der abgeleiteten Klasse unabhängig von der Art der Referenz implementiert.
Grammatikbeispiel
Der folgende Code zeigt den Unterschied zwischen und new
: override
new
override
In diesem Beispiel rufen Sie () auf, um die Implementierung der abgeleiteten Klasse auf dem Objekt des abgeleiteten Typs durchzuführen. Aufrufen (), um die ursprüngliche Implementierung in der Base () auf Objekten des Basistyps durchzuführen, da abgeleitet.doit () ist eine neue Methode.
Anwendungsfälle
new
: override
Wenn die Ableitungsklasse im Vergleich zur Basisklasse vollständig verwendet werden muss, wird sie verwendet, wenn sie sich vollständig von der Basisklasse unterscheidet.
<code class="language-csharp">public class Base { public virtual void DoIt() { } } public class Derived : Base { public new void DoIt() { } // 新的实现 }</code>
:
Wenn die Ableitungsklassen unterschiedliche oder verbesserte Methoden zur Erben der selbstbasierten Klasse bereitstellen möchten, verwenden Sie sie.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Schlüsselwörtern 'New' und 'Override' für Methoden in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!