Heim >Backend-Entwicklung >C++ >Was ist der Unterschied zwischen Schlüsselwörtern 'New' und 'Override' für Methoden in C#?

Was ist der Unterschied zwischen Schlüsselwörtern 'New' und 'Override' für Methoden in C#?

DDD
DDDOriginal
2025-01-28 12:01:09903Durchsuche

What's the Difference Between `new` and `override` Keywords for Methods in C# Inheritance?

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

Der Schlüsselunterschied zwischen

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!

Stellungnahme:
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