抽象类 接口
定义关键字 abstract interface
子类继承或实现关键字 extends implement
方法实现 可以有 不能有但是在jdk8以后可以有default实现
方法访问控制符 无限制 有限制默认是 public abstract 类型
属性访问控制符 无限制 有限制 默认是 public static final 类型
静态方法 可以有 不能有
static静态代码块 可以有 不能有
本类型之间扩展 单继承 多继承
本类型之间扩展关键字 extends extends
抽象类在被继承之间体现的是is-a的关系,接口与被实现之间体现的是can-do的关系
抽象类是模板设计 而接口更像契约式设计
接口是顶级“类” 编译之后还是.class文件
接口某种意义上位于顶层,而抽象类更多对各个接口进行组合,然后实现部分接口行为
接口和抽象类选择犹豫时推荐定义接口,遵循接口隔离原则