static void Demo1() { Derived2 d1 = new Derived2(); Derived d2 = d1; Base d3 = d1; ICommon d4 = d1; d1.Do(); //e,Derived2拥有Do方法 d2.Do(); //e,方法被子类重写 d3.Do(); //b,方法只是被隐藏,因此根据编译时类型选择父类方法 d4.Do(); //c,方法被子类base重写,然后又被derived重写 Console.ReadKey(); }