我们推荐您阅读同名文章:new、virtual、override、abstract 等-抽象,其总结性更强。
我们在分析问题时,越往上分析,就感觉结构越抽象。比如,我们分析动物的捕猎行为:这几种动物是群力合作,那几种动物是耐心守候,那几种动物是致命一击……他们都有一个方法叫“捕猎”,只是我们无法给他们一个统一的过程。此时我们可以在他们的基类中定义一个抽象方法,该方法什么事也不做,只是占个名字。
public abstract class HuntingAnimal { public abstract void Hunt(); } public class Tiger : HuntingAnimal { public override void Hunt() { //... } }
HuntingAnimal 用 abstract 定义了一个抽象方法 Hunt(),由于抽象方法不做什么事情,所以不需要大括号,直接加引号结束即可。在派生类中,用 override 来实现这个抽象方法。
注意,虽然虚方法和抽象方法均是利用 override 关键字来重写,但虚方法和抽象方法是完全不同的。
相关阅读