Почему на выходе получается DDBB, а не DDDDC#

Место общения программистов C#
Anonymous
Почему на выходе получается DDBB, а не DDDD

Сообщение Anonymous »

Код: Выделить всё

public class A
{
public virtual void Write() { Console.Write("A"); }
}
public class B : A
{
public override void Write() { Console.Write("B"); }
}
public class C : B
{
new public virtual void Write() { Console.Write("C"); }
}
public class D : C
{
public override void Write() { Console.Write("D"); }
}

// ...
D d = new D();
C c = d;
B b = c;
A a = b;
d.Write();
c.Write();
b.Write();
a.Write();
Почему D Write() не переопределяет B Write(), если фактический объект, на который ссылается b, — это D?

Подробнее здесь: https://stackoverflow.com/questions/786 ... d-not-dddd

Вернуться в «C#»