Abstract(抽象方法):
Abstract可以修饰 类,方法,属性索引
Abstract修饰的内容代表方法的内容未完全实现,但是继承该抽象类的对象必须要去实现抽象类的两个抽象方法,可以重写,也可以不重写。
例子:
写了一个抽象类SceneState,其中包含两个抽象方法,一个OnEnter,一个OnExit
写了一个StartScene类,继承SceneState,直接报错,说没有实现抽象类的成员,如下图:
重写并实现了两个方法之后,报错消失。
Virtual(虚方法):
virtual关键字用于修饰方法、属性、索引器或事件声明
如果该抽象类的方法中使用了virtual关键字,那么继承这个抽象类的子类可以重写virtual关键字的方法,也可以不重写该方法。
例子2:
写了一个抽象类BasePanel,其中包含4个虚方法OnEnter,OnPause,OnResume,OnExit
又写了一个StartPanel类,继承BasePanel抽象类,其中只有OnEnter方法重写了,其他的都没有动,代表默认继续使用BasePanel中的虚方法。
该StartPanel继承了BasePanel,但只重写了一个OnEnter方法,其他方法可以使用抽象类的方法,也可以重写
总结一下:
一:Virtual只能用来对方法进行声明,Abstract可以对类以及方法声明
二:被Virtual声明的基类方法,子类继承时,可以重写也可以不用重写,而被Override声明的基类方法,在子类中必须重写(因为没有方法体)