一、代码
1 public class Parent 2 { 3 public void Method_A() 4 { 5 Console.WriteLine("Parent Method_A"); 6 } 7 public virtual void Method_B() 8 { 9 Console.WriteLine("Parent Method_B");10 }11 }12 public class Child : Parent13 {14 public new void Method_A()15 {16 Console.WriteLine("Child Method_A");17 }18 public override void Method_B()19 {20 Console.WriteLine("Child Method_B");21 }22 }23 class Program24 {25 static void Main(string[] args)26 {27 Child child = new Child();28 child.Method_A();29 child.Method_B();30 31 Parent p = child as Parent;32 p.Method_A();33 p.Method_B();34 35 Console.Read();36 }37 }
显示结果:
二、总结
1、子类使用new隐藏父类方法后,是独立于父类的方法。
2、子类使用override重写父类的方法后,只是在调用时不再调用父类方法而调用子类方法。
3、子类也可以使用new隐藏父类的虚方法。
3、创建的Child实例,在执行Method_A和Method_B方法时,都执行的是Child中的方法。
但是将该实例转换成父类时,Method_A执行的是Parent的Method_A方法,而Method_B执行的依旧是Child中的Method_B方法。