У меня следующие классы:
class Base
{
public virtual void Print()
{
Console.WriteLine("Base");
}
}
class Der1 : Base
{
public new virtual void Print()
{
Console.WriteLine("Der1");
}
}
class Der2 : Der1
{
public override void Print()
{
Console.WriteLine("Der2");
}
}
Это мой основной метод:
Base b = new Der2();
Der1 d1 = new Der2();
Der2 d2 = new Der2();
b.Print();
d1.Print();
d2.Print();
Выходной сигнал Base
, Der2
, Der2
.
Насколько я знаю, Override не позволяет запустить предыдущий метод, даже если указатель указывает на них. Поэтому первая строка должна выводить Der2
. Однако Base
вышел.
Как это возможно? Как переопределение там не работало?