虚方法:通过关键字virtual 和 override实现多态。
使用场景:一般基类的方法也需要被实现的时候,才使用虚方法,如下例:
抽象类:通过abstract实现多态。
使用场景:抽象类适用于同一系列的类,并且有需要被继承的成员,而且,基类不需要被实现,只是抽象出了这个方法,并不清楚子类怎么实现,同时,抽象类也可以包括非抽象成员。如下例:
接口:一种行为的规范,使用interface关键字
使用场景:适用于“不同系列的类”具有相同的行为(动作,方法);接口可以多继承,写接口的时候一定要遵守接口隔离原则。如下例:企鹅和喜鹊都属于鸟类,但是喜鹊会飞,而企鹅不会飞。飞机不属于鸟类,但是飞机也会飞,所以,这时候就需要把飞这一项行为写成一个接口规范。