您的位置:首页 > 其它

new、abstract、virtual、override关键字的使用

2007-06-13 13:02 531 查看
public abstract class People //abstract 说明类People是一个抽象类,不能被实例的
{
public People()
{
}

public void Work()
{
MessageBox.Show("开始工作!");
}

public virtual void GetOffWork() //虚函数,说明此方法可以被子类覆盖(override)
{
MessageBox.Show("下班啦!");
}
}

public class Manage:People //继承Popele类
{
public Manage()
{
}

new public void Work() //因为基类已经实现了Work方法,而在子类中又实现了Work方法,所以 //编译器会报警,在前面加上 new(隐藏基类方法),是将警报关闭。
{
base.Work(); //调节基类Popele的方法。显示“开始工作”
//MessageBox.Show("管理员开始工作罗!");
}

public override void GetOffWork() //覆盖基类的方法
{
MessageBox.Show("管理员下班啦");
}
}

public class Employee():People
{
public Employee()
{}

new public void GetOffWork() //virtual方法仍然可以 new
{
MessageBox.Show("职员下班啦!");
}

}

以上应该应该几点:
1、如果父类方法没有加virtual关键字,即不是一个虚方法,则在子类中只能隐藏基类方法,而不能覆盖。
2、如果父类方法加了virtual关键字,即它是一个虚方法,在子类中一样可以隐藏。
3、如果子类实现了父类相同的方法(相同的方法名称及签名),而没有new,在编译时会报警,但编译仍然能够通过!
3、调用父类方法:base.方法名()
4、abstract类是一个抽象类,不能被实例化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐