• 隐藏父类方法的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方法。



  • 相关阅读:
    linux下遍历目录
    C++忽略字符大小写比较
    apue.h文件找不到的解决办法
    使用Django框架
    输出程序运行的时间(精确到微秒)
    好玩的代码(1)
    在日志文件中输出当前时间
    windows下安装storm1.1.0并启动
    eclipse配置hadoop2.7.2开发环境并本地跑起来
    windows下安装并启动hadoop2.7.2
  • 原文地址:https://www.cnblogs.com/hyunbar/p/10062693.html
Copyright © 2020-2023  润新知