且看下面的代码:
程序运行的结果是:
B
B
D
D
请问a.F();为什么调用的是B的方法,而不是D的?
using System;
public class A
{
public virtual void F()
{
Console.WriteLine("A");
}
}
public class B:A
{
public override void F()
{
Console.WriteLine("B");
}
}
public class C:B
{
public new virtual void F()
{
Console.WriteLine("C");
}
}
public class D:C
{
public override void F()
{
Console.WriteLine("D");
}
}
public class MyMainClass
{
public static void Main()
{
D d = new D();
A a = d;
a.F();
B b = d;
b.F();
C c = d;
c.F();
d.F();
}
}
public class A
{
public virtual void F()
{
Console.WriteLine("A");
}
}
public class B:A
{
public override void F()
{
Console.WriteLine("B");
}
}
public class C:B
{
public new virtual void F()
{
Console.WriteLine("C");
}
}
public class D:C
{
public override void F()
{
Console.WriteLine("D");
}
}
public class MyMainClass
{
public static void Main()
{
D d = new D();
A a = d;
a.F();
B b = d;
b.F();
C c = d;
c.F();
d.F();
}
}
B
B
D
D
请问a.F();为什么调用的是B的方法,而不是D的?