public static void Test() { ParentClass parent = new ChildClass(); parent.CommonMethod(); // 调用父类 普通方法由左边决定,编译时决定 { typeof(ParentClass) .GetMethod("CommonMethod") .Invoke(parent, null); // 调用父类 typeof(ChildClass) .GetMethod("CommonMethod") .Invoke(parent, null); // 调用子类 } { dynamic dParent = new ChildClass(); dParent.CommonMethod(); // 调用子类方法 运行时决定的 } parent.VirtualMethod(); // 调用子类 虚方法由右边决定, 运行时决定 parent.AbstractMethod(); // 调用子类 抽象方法由右边决定, 运行时决定 }
public static void Test() { Console.WriteLine("*******************************************"); Console.WriteLine("*******************************************"); Console.WriteLine("*******************************************"); ParentClass instance = new ChildClass(); Console.WriteLine("下面是instance.CommonMethod()"); instance.CommonMethod(); Console.WriteLine("下面是instance.VirtualMethod()"); instance.VirtualMethod(); Console.WriteLine("下面是instance.AbstractMethod()"); instance.AbstractMethod(); Console.WriteLine("*******************************************"); Console.WriteLine("*******************************************"); Console.WriteLine("*******************************************"); }