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方法。



  • 相关阅读:
    【c++】重载操作符
    关于Repository模式
    UML建模系列文章总结
    windows批量创建用户
    数据库数据导入导出系列之五 C#实现动态生成Word(转)
    C#.bat文件清理工程目录
    ASP.NET用HttpListener实现文件断点续传
    LINQ to JavaScript
    依赖注入框架Autofac的简单使用
    spring boot日期转换
  • 原文地址:https://www.cnblogs.com/hyunbar/p/10062693.html
Copyright © 2011-2022 走看看