using System;
class A
{
public virtual void F()
{
Console.WriteLine("A.F()");
}
}
class B:A
{
public override void F()
{
Console.WriteLine("B.F()");
}
}
class C:B
{
public new void F()
{
Console.WriteLine("C.F()");
}
}
class D:C
{
public new void F()
{
Console.WriteLine("D.F()");
}
}
class Test
{
static void Main()
{
D d = new D();
A a = d;
B b = d;
C c = d;
a.F();
b.F();
c.F();
d.F();
}
}
输出:
B.F()
B.F()
C.F()
D.F()
如果类C里的F()方法也重写(把new关键字去掉,换成overrid),输出为:
C.F()
C.F()
C.F()
D.F()
接着把类D里的F()方法也重写(把new关键字去掉,换成overrid),输出为:
D.F()
D.F()
D.F()
D.F()