C# enthält ein Schlüsselwort virtual
, die Sie Mitglieder werden außer Kraft gesetzt in abgeleiteten Klassen markieren können.
Der Grund wie in der Dokumentation angegeben ist:
standardmäßig Methoden sind nicht virtuell. Sie können eine nicht virtuelle Methode nicht überschreiben.
Warum haben die Sprachdesigner das so gemacht, wo Sie explizit angeben müssen, dass eine Methode überschrieben werden kann? Ich kann nicht für sie sprechen, aber es scheint offensichtlich, dass sie Programmierern einen sicheren Weg geben wollten, Mitglieder aus Versehen zu umgehen. Das scheint der offensichtlichste Sieg hier zu sein.
Wenn Sie also eine Klasse entwerfen, sollten Sie Klassen, die Sie als virtuell übergangen haben, als markiert markieren.
Sie können mehr über MSDN lesen.
So Sie Basisklasse wird wie folgt aussehen:
class Baseclass
{
public virtual void fun()
{
Console.WriteLine("Hi ");
}
public void fun(int i)
{
Console.Write("Hello ");
}
}
Natürlich können Sie auch virtual
auf die überladene Methode unter einen int hinzufügen könnte.
OK. Es funktioniert also so, als würde das "neue" Keyword verwendet werden aber ist nicht so das Warin erscheint :) jetzt verstehe ich das Problem. Vielen Dank! –
Nun, Sie müssen 'new' Schlüsselwort nur, wenn Sie die Methode ausblenden möchten. Wenn Sie überschreiben möchten, markieren Sie die Methode in der Basisklasse als virtuell. Das Ausblenden der Methode zeigt kein polymorphes Verhalten. –