11.2 虚方法
如果希望基类中某个方法能够在派生类中进一步得到改进,那么可以将这个方法定义为虚方法,虚方法就是可以在派生类中对其实现进一步改进的方法。
定义虚方法要使用virtual关键字,示例如代码清单11-4所示。
代码清单11-4 虚方法
class Person
{
public virtual void Speak()
{
Console.WriteLine(“说话……”);
}
}
这里的Person(人)是作为一个基类出现的,上述Speak方法就是一个虚方法。之所以将它设置为虚方法,就是留给基类的派生类去覆写[1]它的,这样,Person的任何派生类都可以实现新的Speak方法。
注意,virtual关键字必须位于方法的返回类型之前,而且虚方法可以有方法体,这和稍后讲到的抽象方法很不同,抽象方法是必须被派生类覆写的方法,其本身不允许有方法体。
另外,请注意虚函数的限制:
❑静态成员函数不能是虚函数;
❑构造函数不能是虚函数。
[1]覆写,有时也叫做“重写”。