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类是一个抽象类,不能被实例化
{
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类是一个抽象类,不能被实例化
相关文章推荐
- new、abstract、virtual、override,sealed关键字区别和使用代码示例
- C#多态;父类引用指向子类对象;new和override的区别;new、abstract、virtual、override,sealed关键字区别和使用代码示例;c#类的初始化顺序
- new、abstract、virtual、override,sealed关键字区别和使用代码示例
- new、abstract、virtual、override,sealed关键字区别和使用代码示例
- new、abstract、virtual、override,sealed关键字区别和使用代码示例
- sealed,new,virtual,abstract与override关键字的区别?
- C#关键字abstract virtual interface new override
- 关于抽象、继承中virtual、abstract、override、new关键字的区别
- 对关键字abstract、new、virtual、override、sealed的温习笔记
- 关键字virtual,override,new的使用
- C#继承之base,virtual,override,abstract,new,sealed关键字
- 这篇文章不错,介绍了virtual abstract override new 的使用区别
- c#中abstract、override、new、virtual、sealed使用和示例
- c#的new、abstract、virtual、override,sealed关键字区别
- C#继承之base,virtual,override,abstract,new,sealed关键字
- C#.NET中new, override, virtual abstract关键字的区别
- c#中abstract、override、new、virtual、sealed使用
- C#的主要 关键字 new、sealed、partial、interface、virtual、abstract、this、base、override、return、break、continue...
- c#中abstract、override、new、virtual、sealed使用和示例
- C#关键字abstract virtual interface new override