Heim >Backend-Entwicklung >C++ >Was ist der Unterschied zwischen 'New' und 'Override' in C# inheritanz?

Was ist der Unterschied zwischen 'New' und 'Override' in C# inheritanz?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-28 12:07:08784Durchsuche

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

c# Vererbung: Verständnis new und override

In C# Vererbung bieten die Schlüsselwörter new und override unterschiedliche Möglichkeiten zur Verwaltung des Methodenverhaltens in abgeleiteten Klassen. Diese Erklärung verdeutlicht ihre Unterschiede und ihre angemessene Verwendung.

new Modifikator: Definieren einer separaten Methode

Mit dem Modifikator new ermöglicht es einer abgeleiteten Klasse, eine Methode mit demselben Namen wie eine Methode in ihrer Basisklasse einzuführen. Entscheidend ist, dass dieses die Basisklassenmethode nicht überschreibt. Stattdessen erzeugt es eine völlig unabhängige Methode.

Beispiel:

<code class="language-csharp">public class BaseClass {
    public void MyMethod() { Console.WriteLine("BaseClass Method"); }
}

public class DerivedClass : BaseClass {
    public new void MyMethod() { Console.WriteLine("DerivedClass Method"); }
}</code>
Hier ist

eine eigenständige Methode. Das Aufrufen von DerivedClass.MyMethod() auf einer MyMethod() -Stanz führt die Version der abgeleiteten Klasse aus; Wenn Sie es auf einer DerivedClass -Schunierung anrufen, wird die Version der Basisklasse ausgeführt. BaseClass

Modifikator: Ersetzen einer virtuellen Methode override

Der

-Modifikator wird verwendet, um die Implementierung einer override -Methode aus der Basisklasse zu ersetzen. Die Basisklassenmethode muss als (oder ) deklariert werden. virtual stellt sicher, dass die Version der abgeleiteten Klasse aufgerufen wird, wenn die Methode auf einer Instanz der abgeleiteten Klasse aufgerufen wird. abstract override

Beispiel:

In diesem Fall überschreibt
<code class="language-csharp">public class BaseClass {
    public virtual void MyMethod() { Console.WriteLine("BaseClass Method"); }
}

public class DerivedClass : BaseClass {
    public override void MyMethod() { Console.WriteLine("DerivedClass Method"); }
}</code>

. Rufen Sie DerivedClass.MyMethod() auf einer BaseClass.MyMethod() Instanz MyMethod() immer DerivedClass die -Version aus. DerivedClass

Schlüsselunterschiede zusammengefasst:

Feature Methodenerstellung erstellt eine völlig neue Methode ersetzt eine vorhandene virtuelle Methode Vererbung bricht die Vererbungskette für die Methode behält die Vererbungskette bei Basisklassenmethode Basisklassenmethode bleibt nicht betroffen Basisklassenmethode muss virtuell/abstrakt sein

Wann verwendet jeder Modifikator:

  • Verwenden Sie new, wenn Sie eine vollständig separate Methode in der abgeleiteten Klasse wünschen, auch wenn sie einen Namen mit einer Methode in der Basisklasse teilt. Dies ist nützlich, um unbeabsichtigte Übergeordnete und Aufrechterhaltung einer unterschiedlichen Funktionalität zu vermeiden.

  • Verwenden Sie override, wenn Sie beabsichtigen, das Verhalten einer in der Basisklasse definierten virtuellen Methode zu erweitern oder zu ändern, wodurch eine spezielle Implementierung innerhalb der abgeleiteten Klasse bereitgestellt wird und gleichzeitig die Vererbungsbeziehung für diese spezifische Methode aufrechterhalten wird.

Durch das Verständnis dieser Unterscheidungen können Sie Vererbung und Polymorphismus in Ihren C# -Anwendungen effektiv verwenden.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen 'New' und 'Override' in C# inheritanz?. 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