虚方法(virtual)
父类定义的虚方法必须要有方法体
子类继承父类的虚方法,可以通过overide重写,也可以不重写
抽象类(abstract)
特点
子类继承抽象类,必须要通过overide覆盖抽象方法,属性
抽象方法只能定义不能有具体的实现
抽象类不能被实例化
与虚方法的区别
抽象方法在父类中不可以实现,而虚方法可以是实现
都是通过override覆盖
子类继承的抽象类必须实现所有的抽象方法,虚方法可以选择实现或不实现
使用场景
当父类中的方法不知道如何实现的时候,可以考虑将父类写成抽象类,将方法写成抽象方法
如果父类中的方法没有默认实现,父类也不需要被实例化,可以定义抽象类
接口(interface)
特点
public修饰
不能有任何实现
接口可以有多重继承,继承的接口必须要实现里面的所有方法
接口不能被实例化
接口与抽象类的区别
他们都不能被实例化
接口可以多重继承,抽象类只能单一继承