什么是抽象类?什么是接口?
抽象类
- 抽象类不允许实例化,只能被继承。
- 抽象类可以包含属性和方法,方法可以包含代码实现
- 子类继承抽象类时需要实现抽象类中的所有方法
注:抽象类可以理解为基础类,base类,其他具体的类可以直接继承他,但是要求基础的抽象方法必须实现。
接口
- 接口不能包含属性
- 接口只能声明方法,但是不能包含代码实现
- 类实现接口的时候需要实现接口中声明的所有方法
注:接口更像是对外的一种规范,定义必要实现的方法,但是没有具体的属性参数等。
二者之间的比较
抽象类是一种不能被实例化的类,只能被继承。用于定义各种具体的属性 是一种is关系
接口更像是一种功能的规范定义 定义了接口实现时必须实现某些特定功能
两者之间的作用区别
抽象类是用于代码的复用性,一般是先有具体的方法,然后抽象出抽象类,增加代码的复用性
接口偏向于实现解耦 先定义要实现某些功能,然后着手实现代码,约定与实现分离