• C#中隐藏(new)和方法重载(overide)的区别


    重写和隐藏的定义:
    重写:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.
    隐藏:基类方法不做申明(默认为非虚方法),在派生类中使用new声明此方法的隐藏。
    这样看起来似乎不是很清晰明了,换成我自己的理解就是:
    比如父类A,有个方法标记为virtual,a(){}   
    子类B继承A,也声明一个方法a(){}   
    如果B里面的a()使用override,那么访问A的方法时实际上调用了B里面声明的方法,相当于A的方法被覆盖了,new就不是,访问A的a还是A里面定义的方法,访问B就是B里面定义的方法.
    说白了:new是覆盖,override是重载,“覆盖”并不意味着“删除”,但“重载”意味着“删除”,这就是“覆盖”和“重载”的区别  
    隐藏(new)示例:
    using    System;  
       class    
       
             public    void    F()    
             
                   Console.WriteLine("A.F");    
             
       
       class    B:    
       
             new    public    void    F()    
               
                   Console.WriteLine("B.F");    
             
       
       class    Test  
       
             static void Main(string[] args)
             
                         new    B();  
                   b.F();  
                         b;    
                   a.F();  
             
       
       输出为  
       B.F  
       A.F  
    重写virtual(虚方法)示例 
     
       using    System;  
       class    
       
             public    virtual    void    F()    
             
                   Console.WriteLine("A.F");    
             
       
       class    B:    
       
             public    override    void    F()    
               
                   Console.WriteLine("B.F");    
             
       
       class    Test  
       
             static    void    Main()    
             
                         new    B();  
                   b.F();  
                         b;    
                   a.F();  
             
       
       输出为  
       B.F  
       B.F
  • 相关阅读:
    fastcgi与cgi的区别
    SolidWorks eDraring Control
    基于SolidWorks的CAD系统研究
    构建以快速设计为目标的PDM系统
    模型图纸数据库设计
    VB开发SolidWorks实现机械产品参数化设计
    参数化图形驱动及Web零件库的研究开发
    基于PDM的 标准件库管理
    子窗口设计及编程
    某机械设备CAD系统的构造与设计
  • 原文地址:https://www.cnblogs.com/jiese/p/2054113.html
Copyright © 2020-2023  润新知