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

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

Patricia Arquette
Patricia ArquetteOriginal
2025-01-28 14:05:09231Durchsuche

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

C# Methode versteckt und umgeschrieben: Detaillierte Erklärung

In C#kann die abgeleitete Klasse die Basisklassenmethode auf zwei verschiedene Arten bedienen: Methodenverbrennung und Methode umschreiben. Der Unterschied zwischen dem Verständnis dieser beiden Konzepte ist für eine effektive Wartung und Vererbung von Code wesentlich.

Methode versteckt

Wenn eine Klasse eine neue Methode der gleichen Namen wie die chinesische Foundation -Methode deklariert, es jedoch keine explizite Aussage als Umschreibungsmethode gibt, wird die Methode versteckt. Die Methode der neuen Erklärung verbirgt die Implementierung der Basisklasse effektiv und bietet eine eigene unabhängige Implementierung.

Beispiel:

Wenn CLB in der Instanz der Klasse B Clb.foo () aufruft, wird die Implementierung von Klasse B und Ausgaben "1" ausgeführt. Wenn wir jedoch CLB in eine Klasse A umwandeln, greift der Anrufer auf die Basisklassenimplementierung von Foo () und Ausgaben "5" zu.

Umschreiben
<code class="language-csharp">class A {
   public int Foo(){ return 5;}
}
class B : A{
   public new int Foo() { return 1;} //隐藏
}</code>

Unterscheidet sich von versteckt, schreibt die Methode die Implementierung der neuen Implementierungsmethode in der Derivatklasse neu. Dies wird durch die Verwendung des Schlüsselworts Override erreicht.

Beispiel:

Wenn die Instanz der Klasse B Clb.bar () aufruft, wird die Umschreibung der Implementierung in Klasse B und "1" ausgeführt. Das Umwandeln von CLB für die obligatorische Kategorie A wirkt sich nicht auf das Verhalten aus, da immer die Aufruf und Realität aufgerufen wird.

Hauptunterschiede

<code class="language-csharp">class A {
   public virtual int Bar(){return 5;}
}
class B : A{
   public override int Bar() {return 1;} //重写
}</code>

versteckt die Foundation -Methode:

verborgen in der Derivatklasse erstellt eine neue Methode, die die Implementierung der Basisklasse verbirgt. Das Umschreiben ersetzte die Verwirklichung der Basisklasse.

Umschreiben erfordert Schlüsselwörter: Umschreiben muss überschreibende Schlüsselwörter verwenden, um den erwarteten Ersatz explizit anzugeben.

    Vererbungsvererbung versteckte Zerstörung:
  • Durch Verstecken der Implementierung der Basisklasse kann das Verstecken die Erbschaftskette zerstören. Umschreiben der Erbschaftsbeziehung. Die versteckte Methode ist kein Polymorphismus:
  • Die verborgene Methode wird nicht durch den Multi -State -Mechanismus (z. B. dynamische Bindung) beeinflusst. Die Umschreibungsmethode zeigt Polymorphismus und macht unterschiedliche Antworten entsprechend dem tatsächlichen Objekttyp.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Methodenschatten und Überschreibung in C#?. 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