抽象类:含有 abstract 修饰符的 class 就算 抽象类;它既可以有抽象方法,也可以有 普通 方法,构造方法,静态方法,但是不能有抽象构造方法 和 抽象静态方法。且如果其子类没有实现 其所有的 抽象方法,那么该 子类 也必须是 抽象类; 接口:他可以看成是 抽象类的 一个特例,使用 interface 修饰符;

内部结构:

  • jdk7:接口只有常量和抽象方法,无构造器

  • jdk8:接口增加了 默认方法 和 静态方法,无构造器

  • jdk9:接口允许 以 private 修饰的方法,无构造器

共同点:

  • 不能实例化;

  • 多态方式的一种使用;

不同点:

  • 抽象类是单继承的,而接口可以多继承(实现);