Heim >Backend-Entwicklung >C++ >Übergeordnetes gegen das Schatten in C#: Wann sollten Sie jede Technik anwenden?
In Bezug auf die Vererbung bietet C# zwei verschiedene Technologien, um die Methode in der Basisklasse neu zu definieren: neu schreiben und verstecken. Diese beiden Technologien haben grundlegende Unterschiede in Bezug auf Arbeitsmethoden und Einfluss auf die Erbschaftskette.
versteckt
Hidden ermöglicht es Ihnen, eine gleichnamige gleichnamige Methode zu erstellen, aber Schlüsselwörter werden nicht verwendet. Diese Methode ist ein lokales Mitglied der abgeleiteten Klasse geworden und versteckt die Foundation -Methode. Wenn eine abgeleitete Instanz die versteckte Methode aufruft, wird die Implementierung dieser Klasse unabhängig von der Struktur der Vererbungsebene direkt ausgeführt.
Beispiel: override
In diesem Beispiel wird die Methode in der Klasse
versteckt, und die Methode<code class="language-csharp">class A { public int Foo(){ return 5;} public virtual int Bar(){return 5;} } class B : A { public new int Foo() { return 1;} //隐藏 public override int Bar() {return 1;} //重写 }</code>wird umgeschrieben. Wenn
( Instanz) Foo
aufruft, gibt es B
zurück, da die Bar
in clB
direkt. B
Foo
Umschreiben 1
B
Foo
Im Gegensatz dazu erfordert das Umschreiben
Beispiel:
im vorherigen Beispiel wird die Methode von override
zurück, da in umschreibt.
Der Unterschied zwischen verborgenem und neuem Umschreiben B
Bar
clB
Die Wahl zwischen verstecktem und neuem Umschreiben hängt von Ihren spezifischen Anforderungen ab: Bar
1
B
versteckt: Bar
Wenn Sie die Vererbungsmethode der Basisklasse verbergen und die lokale Implementierung verwenden möchten, verwenden Sie Hidden.
Nachwaren Sie: Wenn Sie die Vererbungsmethode neu definieren und die Implementierung der abgeleiteten Klasse ausführen möchten, verwenden Sie das Umschreiben.
Das obige ist der detaillierte Inhalt vonÜbergeordnetes gegen das Schatten in C#: Wann sollten Sie jede Technik anwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!