• 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
  • 相关阅读:
    linux 下面 opcache 拓展
    php中函数前加&符号的作用分解
    apache 设置404页面
    nginx 环境搭建使用之入门
    curl获取http请求的状态码
    js打开新的窗体不被浏览器阻止
    YII 框架使用之——创建应用
    Yii 框架创建自己的 web 应用
    PHP中CURL方法curl_setopt()函数的一些参数
    Linux的学习--使用PuTTY
  • 原文地址:https://www.cnblogs.com/jiese/p/2054113.html
Copyright © 2020-2023  润新知