Heim >Backend-Entwicklung >C++ >Schatten vs. Übergeordnet in C#: Was ist der Unterschied?

Schatten vs. Übergeordnet in C#: Was ist der Unterschied?

DDD
DDDOriginal
2025-01-28 14:16:09656Durchsuche

Shadowing vs. Overriding in C#: What's the Difference?

versteckt und umschreiben in C#: In -Tepth -Analyse

In der Objekt -orientierten Programmierung ist der Vererbungsmechanismus für die Expansion und Modifikation sehr wichtig. Es gibt jedoch zwei verschiedene Mechanismen beim Ändern von Methoden: Verstecken und Umschreiben.

versteckt: Die Methode zur Abschirmung des Fundaments

versteckt ist ein gleichnamiges Mitglied wie ein Mitglied, das von der Basisklasse geerbt wurde. Anders als neu geschrieben wird die abgeleitete Klasse keine Vater -Sonnenbeziehung aufbauen. Stattdessen schafft es eine neue Einheit versteckter Stiftungsmitglieder.

Folgendes ist ein Beispiel:

In dieser Szene verbirgt die in Hund deklarierte Sayhello () -Methode die vom Tier geerbte Methode. Wenn das Hundeobjekt Sayhello () aufruft, wird die versteckte Methode ausgeführt, um die Implementierung der Basisklasse zu blockieren.

<code class="language-csharp">class Animal
{
    public virtual string SayHello() { return "Hello from Animal"; }
}

class Dog : Animal
{
    public new string SayHello() { return "Hello from Dog"; }
}</code>
Umschreiben: Ändern Sie das Verhalten der Basisklassenmethode

Andererseits bezieht sich das Umschreiben auf dieselbe Signaturmethode der Erbschaft des Sub -Classes -Zustands wie die Erbschaft der Elternklasse. Standardmäßig erbt die Umschreibungsmethode den Zugriff auf den Modifikator und den Rückgabetyp der Basisklassenmethode. Sie können jedoch die Verwirklichung des Zolls ändern.

In diesem Beispiel schreibt die Sayhello () -Methode im Hund die im Tier definierte Methode neu. Wenn Sie das Hundeobjekt aufrufen, wird die Umschreibungsmethode bereitgestellt, um kundenspezifische Verhaltensweisen für den Hund bereitzustellen.

Der Schlüsselunterschied zwischen dem Verstecken und dem Umschreiben
<code class="language-csharp">class Animal
{
    public virtual string SayHello() { return "Hello from Animal"; }
}

class Dog : Animal
{
    public override string SayHello() { return "Hello from Dog"; }
}</code>

Zugriffsberechtigungen: Der Zugriff auf die Basismethode zur Reservierung der Basisklassenmethode und die verborgene Ermöglichung der abgeleiteten Klasse, sie zu ändern.

Vererbungsbeziehung:
    Umschreibung der Aufstellung einer Vater -Mon -Beziehung und versteckte Mitglieder der Basisklasse.
  • Versteckte Mitglieder: Die Mitglieder, die die Vererbung verbergen können, können bei der Verwendung des Basiscode zu Problemen führen.
  • Aktivitätsdomäne: Die Umschreibungsmethode ist an die hierarchische Struktur der Vererbung gebunden, und die verborgene Methode ist auf den Umfang der abgeleiteten Klasse beschränkt.
  • Wenn Sie versteckt und neu schreiben
  • versteckt wird normalerweise verwendet, um Konflikte in der Struktur der Vererbungsebene zu benennen, kann aber auch verwendet werden, um die Vererbung vor der Derivatklasse zu verbergen.
  • Andererseits kann das Umschreiben des Verhaltens der Unterklasse die Vererbungsmethode ändern und so Flexibilität bieten, um die Funktion zu definieren, ohne den Vererbungsbaum zu zerstören.

Das obige ist der detaillierte Inhalt vonSchatten vs. Übergeordnet in C#: Was ist der Unterschied?. 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