隐藏父类方法的new和重写父类虚方法virtual的区别

一、代码

  

 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 : Parent
13     {
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 Program
24     {
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_AMethod_B方法时,都执行的是Child中的方法。

       但是将该实例转换成父类时,Method_A执行的是ParentMethod_A方法,而Method_B执行的依旧是Child中的Method_B方法。



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值