c# erbte Schattierungs- und übergeordnete differentielle Erklärung
überschrieben
Wenn eine Methode in einer Unterklasse -Anweisung auftritt, hat die in der Basisklasse definierte Methode denselben Namen, Rückgabe -Typ und Parameterliste. Das Umschreiben ermöglicht die benutzerdefinierte Implementierung der Basisklassenmethode. Wenn das Sub -Class -Objekt die Umschreibungsmethode aufruft, wird der Code in der Unterklasse das Verhalten der Basisklassenmethode effektiv abdecken. Im Gegensatz dazu
schattenWenn eine Methode in einer Unterklasse -Anweisung auftritt, hat die Methode dieser Methode denselben Namen wie die Methode in der Basisklasse, jedoch die Methodensignatur (Rückgabetyp oder Parameterliste) anders. Eine neue Methode ist in der Unterklasse versteckt, die die Methode in der Basisklasse durch denselben Namen ersetzt. Rufen Sie die versteckte Methode auf dem Objekt der Unterklasse auf, um den Code in der Unterklasse auszuführen und die Basismethode effektiv zu verbergen. Betrachten Sie das folgende Beispiel:
Wenn Sie die Methode auf den Objekten der Klasse A und B aufrufen, lautet die erwartete Ausgabe wie folgt:
<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>
Der Schlüsselunterschied besteht darin, das B -Objekt in ein Objekt zu konvertieren:
<code class="language-csharp">A clA = new A(); B clB = new B(); Console.WriteLine(clA.Foo()); // 输出:5 Console.WriteLine(clA.Bar()); // 输出:5 Console.WriteLine(clB.Foo()); // 输出:1 Console.WriteLine(clB.Bar()); // 输出:1 // 将 B 转换为 A Console.WriteLine(((A)clB).Foo()); // 输出:5</code>
für versteckte Methoden (Foo) nennen Sie die Realisierung der Basisklasse.
einen kontrollierten Mechanismus, um die implementierende Methode zu ändern und gleichzeitig die Erbschaftsstruktur beizubehalten.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Schatten und Überschreibung im C# -Vererbung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!