zoukankan      html  css  js  c++  java
  • 隐藏父类方法的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方法。



  • 相关阅读:
    emberjs--目录结构
    emberjs--目录结构
    emberjs--环境搭建
    emberjs--环境搭建
    安装svn插件最快速,最简单的方法
    安装svn插件最快速,最简单的方法
    华为C8825D刷机失败解决方法
    华为C8825D刷机失败解决方法
    selenium2 用selenium安装、加载、启用插件(一)
    linux大杂烩
  • 原文地址:https://www.cnblogs.com/hyunbar/p/10062693.html
Copyright © 2011-2022 走看看