没有合适的资源?快使用搜索试试~ 我知道了~
new、abstract、virtual、override,sealed关键字区别和使用代码示例
需积分: 50 9 下载量 39 浏览量
2012-11-10
22:36:02
上传
评论
收藏 64KB DOC 举报
温馨提示
试读
19页
new、abstract、virtual、override,sealed关键字区别和使用代码示例
资源推荐
资源详情
资源评论
new 与 override 的区别
引用 AnyTao 博客中的一句话:
覆写(override)与重载(overload),是成就 .NET 面向对
象多态特性的基本技术之一
正如某网友说的那一句话:
Override 覆写 就是把原来的换掉了
new 新的 就是两个共存着
使用 override 重写 xx 方法,通过父类引用一样只能看到重写后的
方法;
如果使用 new 隐藏 xx 方法,父类子类引用各自对应方法;
override 重写虚方法,那么就只剩下重写以后的方法;
new 隐藏基类的方法,那么基类的方法和当前类的方法同时存在只
是被隐藏了;
使用 override 修饰符主要用来修改方法、属性、索引器或事件。
重写基方法必须与重写方法具有相同的名称。
不能重写非虚方法或静态方法。重写基方法必须是虚拟的、抽
象的或重写的。
重写声明不能更改虚方法的可访问性。重写方法和虚方法必须
具有相同的访问级修饰符。例如:虚方法为 public 的,重新方法
也必须是 public 的。
不能使用下列修饰符修改重写方法:
new static virtual abstract
重写属性声明必须指写与继承属性完全相同的访问修饰符、类
型和名称,并且重写属性必须是虚拟的、抽象的或是重写的。
要求:(三相同)
1、方法名称相同
2、参数列表相同
3、返回值类型相同
一句话,只需要重新写方法内部的内容!
,override 可以覆盖基类的方法,让基类的方法以子类的内容实现,
而 new 不用来覆盖基类的方法,而是全新定义一个子类的方法,这个
方法只属于子类,与基类的方法无关,只是名字上相同而已
先看 abstract 和 override 使用方法
abstract class Base
{
public virtual void work()
{
MessageBox.Show("基类--开始工作");
}
public virtual void outwork()
{
MessageBox.Show("基类--下班");
}
Public abstract void Pay(); //声明抽象方法,必须
要被子类 new 或 override;只有当类是 abstract 时才可以声明
abstract 方法
}
class Employee : Base
{
public new void work()
{
MessageBox.Show("子类(new)--开始工作");
}
public override void outwork() //覆写抽象方法(一
定要在子类覆写父类的抽象方法)
{
MessageBox.Show("子类(override)下班");
}
}
//测试代码
Code
new 声明的方法,当使用子类的类型来调用的时候,它会运行子类
中的函数,而如果类型是基类的话,被隐藏的基类函数就会站到前
台来。只有使用 virtual 定义基类中的函数,并使用 override 标
记子类中的函数,才可以达到想要的多态类(始终调用子类的方
法)。
在子类中 new 父类中的方法,父类中的方法不一定是虚类型,即
virtual
但是在子类中 override 父类中的方法,父类的方法一定得是虚类
型,
代码示例:
abstract class Animal
{
public abstract void Drink();
public abstract void GotoBed();
}
class Dog : Animal
{
public override void Drink()
剩余18页未读,继续阅读
资源评论
鬼门关
- 粉丝: 2
- 资源: 24
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功