virtual/override und neue Schlüsselwörter in C#: Wann kann ich welches Schlüsselwort verwenden, um die Methode neu zu schreiben?
Bei der Definition von Methoden in Basisklassen stehen Programmierer häufig vor dem Problem, ob die Schlüsselwörter "virtuelle" oder "neue" verwendet werden sollen. Diese Entscheidung beeinflusst das Verhalten der Umschreibung in abgeleiteten Klassen erheblich.
virtual override
Verwenden Sie das Schlüsselwort "Virtual" in der Basisklassenmethode, um anzuzeigen, dass es in der abgeleiteten Klasse überschrieben werden kann. Um die Methode zu überschreiben, muss die abgeleitete Klasse das Schlüsselwort "Override" verwenden. Dies stellt sicher, dass die überragende Methode wie erwartet funktioniert und die Vererbungshierarchie und Polymorphismus aufrechterhalten.
Wenn die abgeleitete Klasse eine umgeschriebene Methode aufruft, wird die überschriebene Version durchgeführt, auch wenn die Referenzvariable, die das Objekt hält, vom Basisklassentyp enthält. Dies wird als späte Bindung bezeichnet und ermöglicht ein dynamisches Verhalten.
New Keyword
Stattdessen deklariert das "neue" Schlüsselwort in der abgeleiteten Klassenmethode eine neue Methode, die vererbte Methoden mit demselben Namen versteckt. Bei Verwendung ersetzt die neue Methode ererbte Methoden in der abgeleiteten Klasse und zerstört so den Polymorphismus.
Wenn die abgeleitete Klasse eine mit "neue" deklarierte Methode aufruft, wird die neue Methode unabhängig von der Art der Referenzvariablen ausgeführt, die das Objekt enthält. Dies gilt als frühes Bindung und behindert den Polymorphismus.
Beispiel
Betrachten Sie das folgende Code -Beispiel:
public class Base
{
public virtual bool DoSomething() { return false; }
}
public class Derived : Base
{
public new bool DoSomething() { return true; }
}
Wenn Sie eine Instanz von einer Variablen der Typ -Basis abgeleitet und doSomething () aufrufen, ist das Ergebnis falsch, wenn Sie virtuell/überschreiben. Wenn Sie jedoch neu verwenden, ist das Ergebnis wahr. Dies unterstreicht den Unterschied zwischen verspäteter Bindung und frühzeitiger Bindung.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3