看代码
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication4 ... { class Program ...{ static void Main(string[] args) ...{ A a = new C(); a.foo(); B b = new C(); b.foo(); Console.ReadKey(); } } class A ...{ public virtual void foo() ...{ Console.WriteLine("A"); } } class B : A ...{ new virtual public void foo() ...{ Console.WriteLine("B"); } } class C : B ...{ override public void foo() ...{ Console.WriteLine("C"); } }}
输出是
A
C
由于B使用了new关键字,使得B的foo不再是A的override。所以当调用a.foo(); 时, 无法调用到C的foo.
