抽象类与接口

抽象类:可以定义方法和属性,和抽象方法,仅支持继承,不支持实例化,表示一种has-a的关系,方便复用代码,和增强类的拓展性,强制继承的类实现抽象方法

接口:可以定义抽象方法和常量,仅支持实现,不支持实例化,表示一种has-a的关系,抽出接口,方便使用者关心使用而不是具体实现,增强实现的类的可拓展性

什么时候用抽象类,什么时候用接口

复用的时候,is-a的关系用抽象类

不关心复用,解决抽象,has-a关系用接口

尽量用接口设计业务,增加拓展性,模糊具体方法名,但是得有个度,不要为了用接口而接口