抽象类:含有 abstract 修饰符的 class 就算 抽象类;它既可以有抽象方法,也可以有 普通 方法,构造方法,静态方法,但是不能有抽象构造方法 和 抽象静态方法。且如果其子类没有实现 其所有的 抽象方法,那么该 子类 也必须是 抽象类; 接口:他可以看成是 抽象类的 一个特例,使用 interface 修饰符;
内部结构:
-
jdk7:接口只有常量和抽象方法,无构造器
-
jdk8:接口增加了 默认方法 和 静态方法,无构造器
-
jdk9:接口允许 以 private 修饰的方法,无构造器
共同点:
-
不能实例化;
-
多态方式的一种使用;
不同点:
- 抽象类是单继承的,而接口可以多继承(实现);