欢迎来到天天文库
浏览记录
ID:32399918
大小:86.50 KB
页数:10页
时间:2019-02-04
《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声明的方法,当使用子类的类型来调用的时候,它会运行子类中的函
此文档下载收益归作者所有