Heim > Backend-Entwicklung > C++ > Was ist der Unterschied zwischen Schatten und Überschreibung in C#?

Was ist der Unterschied zwischen Schatten und Überschreibung in C#?

Barbara Streisand
Freigeben: 2025-01-28 14:08:10
Original
514 Leute haben es durchsucht

What's the Difference Between Shadowing and Overriding in C#?

im Depth Verständnis des verborgenen und Umschreibens in C#

In Object -Oriented -Programmierung sind das Verstecken und Umschreiben die Schlüsselkonzepte, die sich auf das Codeverhalten auswirken. In diesem Artikel werden die Unterschiede zwischen den beiden im Erbschaftssystem der C#-Klasse untersucht.

Angenommen, wir haben eine Basis "A", einschließlich zwei Methoden "Foo" und "Bar". Die "Foo" -Methode wird für die Öffentlichkeit deklariert, und die "Bar" -Methode ist öffentlich virtuell, sodass die abgeleitete Klasse ihre Implementierung umschreiben kann. Betrachten Sie nun ein Derivat "B", das von "A" geerbt wurde.

versteckt

In Hidden definiert die abgeleitete Klasse "B" eine Methode namens "Foo", und ihre Name und Parameterliste entsprechen der Basismethode. In diesem Fall hat die Implementierung der Methode im "B" die Basisklasse jedoch nicht umgeschrieben. Es erstellt eine neue unabhängige Methode in der Klasse "B", um die Basismethode zu verbergen.

zum Beispiel im vorgesehenen Codefragment:

Auf die "neue" Schlüsselwörter vor der chinesischen Methode

Klasse "B" werden auf das Typ "B" vom Typ "B" zugegriffen.
public new int Foo() { return 1;}     //隐藏
Nach dem Login kopieren

umschreiben <重> neu

Andererseits ist die Methode mit der virtuellen Methode oder Abstraktionsmethode in der Basisklasse dieselbe, wenn das Umschreiben in einer Methode der Derivatklasse auftritt. In diesem Fall hat die Implementierung der abgeleiteten Klasse die Implementierung der Basisklasse ausdrücklich ersetzt und wurde zum Standardverhalten der abgeleiteten Instanz.

In einem bestimmten Beispiel:

Weil die Anweisung "Bar" in der Basis "A" virtuell ist, ermöglicht das Schlüsselwort "Überschreibung" der Klasse "B" um neu und bereitzustellen und ihr eigenes Verhalten bereitzustellen.

public override int Bar() {return 1;} //重写
Nach dem Login kopieren
Impact

Wenn die abgeleiteten Instanzen in eine Basisklassenreferenz umgewandelt werden, kann das Verstecken zu einem zufälligen Verhalten führen. In diesem Fall kann die versteckte Methode in der Basisklasse anstelle der Umschreibungsmethode in der Derivatklasse aufgerufen werden, die während der Laufzeit Fehler verursachen kann.

Das Umschreiben folgt jedoch der hierarchischen Struktur der Vererbung und stellt sicher, dass die in diesen Klassen definierten geeigneten Methoden in der geeigneten Methode der abgeleiteten Klasse implementiert werden, um konsistente und erwartete Verhaltensweisen zu gewährleisten.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Schatten und Überschreibung in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage