Bei der objektorientierten Programmierung ermöglicht das Überschreiben von Methoden einer abgeleiteten Klasse, ihre eigene Implementierung von Methoden bereitzustellen, die von einer Basisklasse geerbt wurden. C# bietet zwei unterschiedliche Möglichkeiten zum Überschreiben von Methoden: die Schlüsselwörter „virtual“ und „override“ oder einfach die Deklaration einer neuen Methode mit derselben Signatur.
Wenn eine Methode in der Basisklasse als „virtuell“ deklariert ist, kann sie in der abgeleiteten Klasse mit dem Schlüsselwort „override“ überschrieben werden. Dieser Ansatz ermöglicht es einer abgeleiteten Klasse, ihre eigene Implementierung bereitzustellen und gleichzeitig die ursprüngliche Methodensignatur beizubehalten. Wenn das Objekt zur Laufzeit einen abgeleiteten Typ hat, wird die überschriebene Methode aufgerufen, auch wenn die Referenzvariable, die das Objekt enthält, vom Basistyp ist.
Alternativ kann eine Methode in einer abgeleiteten Klasse überschrieben werden, indem eine neue Methode mit derselben Signatur deklariert und als „neu“ markiert wird. Diese Methode ersetzt die Implementierung in der Basisklasse vollständig und die überschriebene Methode wird unabhängig vom Typ des Laufzeitobjekts aufgerufen.
Um den Unterschied zu veranschaulichen, betrachten Sie den folgenden Codeausschnitt:
<code class="language-csharp">public class Foo { public virtual bool DoSomething() { return false; } } public class Bar : Foo { public override bool DoSomething() { return true; } }</code>
Wenn wir den Code wie folgt aufrufen:
<code class="language-csharp">Foo a = new Bar(); a.DoSomething();</code>
Die Ergebnisse variieren je nach der zum Umschreiben verwendeten Methode:
Zusammenfassend sind die Hauptunterschiede zwischen „virtuell“, „überschreiben“ und „neu“ für das Überschreiben von Methoden:
Das obige ist der detaillierte Inhalt vonÜberschreiben von C#-Methoden: Virtual/Override vs. New – Was ist der Unterschied?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!