博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中隐藏(new)和方法重写(override)和重载(overload)的区别
阅读量:4663 次
发布时间:2019-06-09

本文共 1054 字,大约阅读时间需要 3 分钟。

重载、重写和隐藏的定义:

重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同。这样才能通过传递不同的参数来决定到底调用哪一个。而返回值类型不同是不能构成重载的。

重写:继承时发生,在子类中重新定义父类中的方法,子类中的方法和父类的方法是一样的

        例如:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.

隐藏:基类方法不做申明(默认为非虚方法),在派生类中使用new声明此方法的隐藏。

重载时,根据参数选择调用的方法;

重写时,访问父类子类皆调用子类的重写方法;
隐藏时,访问父类则调用父类的方法,子类子类的方法。

隐藏(new)示例:

using    System;  
   class    A  
   {  
         public    void    F()    
         {  
               Console.WriteLine("A.F");    
         }  
   }  
   class    B:    A  
   {  
         new    public    void    F()    
         {    
               Console.WriteLine("B.F");    
         }  
   }  
   class    Test  
   {  
         static void Main(string[] args)
         {  
               B    b    =    new    B();  
               b.F();  
               A    a    =    b;    
               a.F();  
         }  
   }  
   输出为  
   B.F  
   A.F  

重写virtual(虚方法)示例  

   using    System;  
   class    A  
   {  
         public    virtual    void    F()    
         {  
               Console.WriteLine("A.F");    
         }  
   }  
   class    B:    A  
   {  
         public    override    void    F()    
         {    
               Console.WriteLine("B.F");    
         }  
   }  
   class    Test  
   {  
         static    void    Main()    
         {  
               B    b    =    new    B();  
               b.F();  
               A    a    =    b;    
               a.F();  
         }  
   }  
   输出为  
   B.F  
   B.F

补充:重写override一般用于接口实现和继承类的方法改写,要注意

   1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;

   2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;
   3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
   4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

转载于:https://www.cnblogs.com/cm8448940/archive/2008/08/06/1261919.html

你可能感兴趣的文章
转:影响数据检索效率的几个因素
查看>>
Xamarin.Android 的照相機使用
查看>>
全文检索-Elasticsearch (三) DSL
查看>>
MySQL 查询缓存
查看>>
文档对象模型(DOM)系列一:DOM基础
查看>>
js代码收集(1)
查看>>
二:输入10个整数,将它们从大到小排序后输出。
查看>>
mongodb删除重复数据
查看>>
项目中遇到的问题:前台 disabled 与 后台disabled
查看>>
BZOJ1801:[Ahoi2009]chess 中国象棋
查看>>
多态(3)面向对象的三大特征之三
查看>>
简单高效的代码部署方法
查看>>
[Spring框架]Spring JDBCTmplate基础入门总结.
查看>>
ecshop修改产品详情 折扣倒计时时间
查看>>
Core Java Volume I — 4.10. Class Design Hints
查看>>
hdu 1785 You Are All Excellent
查看>>
IE中,多次弹出Pop页面,光标无法落入Pop页面中的Input,导致无法输入
查看>>
mac中使用nvm管理node
查看>>
NLP-训练个model出来写诗
查看>>
小小知识点(八)——星座图与PSK、QAM调制的关系
查看>>