Q 抽象类和接口的语法特性?
抽象类不允许被实例化, 只能被继承, 他可以包含属性(实例变量)和方法. 方法既可以包含代码实现也可以不包含代码实现. 不包含代码实现的方法叫做抽象方法, 子类继承抽象类, 必须实现抽象类中的所有抽象方法
接口不能包含属性(实例变量) 只能声明方法, 方法不能包含代码实现, 类实现接口时候必须实现接口中声明的所有方法
这个需要根据具体的编程语言 做具体的区分 比如OC 没有抽象类, 接口方式 使用可选关键字也可以不实现接口中的方法
Q 抽象类和接口存在的意义?
抽象类是队成员变量和方法的抽象, 是一种 is-a的关系, 是为了解决代码复用问题.
接口仅仅是对方法的抽象,是一种has-a的关系, 标识具有某一组行为特性,是为了解决解耦问题, 隔离接口和具体的实现,提高代码的可扩展性
Q 抽象类和接口的应用场景区别
什么时候使用抽象类? 什么时候使用接口? 实际上 判断标准很简单, 如果要表示一种is-a的关系,并且是为了解决代码复用问题, 我们就用抽象类; 如果是要表示has-a的关系, 并且为了解决抽象而非代码复用问题,那我们就用接口.