Virtuelle Methode, die von abgeleitet anstelle von base aufgerufen wird
Kann mir jemand erklären, warum die überschriebene Methode aufgerufen wird, wenn ich die Klasse in die Basis-Klasse umsetze:
class Base
{
public virtual void VirtualMethod()
{
Console.WriteLine("Base virtual method");
}
}
sealed class Derived : Base
{
public override void VirtualMethod()
{
Console.WriteLine("Overriden method");
}
}
static void Main(String[] args)
{
Derived d = new Derived();
((Base)d).VirtualMethod();
}
Ich meine, dieser Code druckt:
Overriden method
und nicht
Base virtual method
Es ist eine Laufzeit- oder Kompilierzeit-Zukunft?
Ich weiß, dass ich die virtuelle Methode der Basis aus der durch Aufruf abgeleiteten aufrufen kannbase.VirtualMethod()
aber kann ich es von außen anrufen? (wie vonMain
oder eine andere Klasse)