new、abstract、virtual、overridesealed关键字区别和使用代码示例

new、abstract、virtual、overridesealed关键字区别和使用代码示例

ID:32399918

大小:86.50 KB

页数:10页

时间:2019-02-04

new、abstract、virtual、overridesealed关键字区别和使用代码示例_第1页
new、abstract、virtual、overridesealed关键字区别和使用代码示例_第2页
new、abstract、virtual、overridesealed关键字区别和使用代码示例_第3页
new、abstract、virtual、overridesealed关键字区别和使用代码示例_第4页
new、abstract、virtual、overridesealed关键字区别和使用代码示例_第5页
资源描述:

《new、abstract、virtual、overridesealed关键字区别和使用代码示例》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、new、abstract、virtual、override,sealed关键字区别和使用代码示例本文是整理牛人精华贴所得,非100%原创 new与override的区别 引用AnyTao博客中的一句话:覆写(override)与重载(overload),是成就.NET面向对象多态特性的基本技术之一正如某网友说的那一句话:Override覆写就是把原来的换掉了new       新的就是两个共存着使用override重写xx方法,通过父类引用一样只能看到重写后的方法;如果使用new隐藏xx方法,父类子类引用各自对应方法;override重写虚方法,那么就只剩下重写以后的方法;new隐藏基

2、类的方法,那么基类的方法和当前类的方法同时存在只是被隐藏了;  使用override修饰符主要用来修改方法、属性、索引器或事件。重写基方法必须与重写方法具有相同的名称。       不能重写非虚方法或静态方法。重写基方法必须是虚拟的、抽象的或重写的。      重写声明不能更改虚方法的可访问性。重写方法和虚方法必须具有相同的访问级修饰符。例如:虚方法为public的,重新方法也必须是public的。       不能使用下列修饰符修改重写方法:       new       static       virtual       abstract       重写属性声明必须指写与继承

3、属性完全相同的访问修饰符、类型和名称,并且重写属性必须是虚拟的、抽象的或是重写的。要求:(三相同)1、方法名称相同2、参数列表相同3、返回值类型相同一句话,只需要重新写方法内部的内容!,override可以覆盖基类的方法,让基类的方法以子类的内容实现,而new不用来覆盖基类的方法,而是全新定义一个子类的方法,这个方法只属于子类,与基类的方法无关,只是名字上相同而已 先看abstract和override使用方法abstractclassBase   {       publicvirtualvoidwork()       {           MessageBox.Show("基类

4、--开始工作");       }       publicvirtualvoidoutwork()       {           MessageBox.Show("基类--下班");       }              PublicabstractvoidPay();      //声明抽象方法,必须要被子类new或override;只有当类是abstract时才可以声明abstract方法       }   classEmployee:Base   {       publicnewvoidwork()       {           MessageBox.Sho

5、w("子类(new)--开始工作");       }       publicoverridevoidoutwork()  //覆写抽象方法(一定要在子类覆写父类的抽象方法)       {           MessageBox.Show("子类(override)下班");       }}               //测试代码        Code          //第一种情况            Employee emp = new Employee();            emp.work();              //子类(new)--开始工作  

6、          emp.outwork();          //子类(override)下班                 //第二种情况            Employee emp = new Employee();            Base b = (Base)emp;   //指向抽象类了            b.work();                //基类--开始工作            b.outwork();             //子类(override)下班  被子类覆写了,所以不是显示基类下班            //第三种情况

7、            Base b = new Employee();            //同上面是一样的            b.work();                //基类--开始工作            b.outwork();             //子类(override)下班            Console.ReadLine();   new声明的方法,当使用子类的类型来调用的时候,它会运行子类中的函

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。