且看下面的代码: 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(); }} 程序运行的结果是: B B D D 请问a.F();为什么调用的是B的方法,而不是D的? 转载于:https://www.cnblogs.com/withwind/archive/2004/10/07/49669.html