在说二者区别之前,首先看一看二者的一些特性,如下 1、2 所示:
1、抽象类
- 有抽象方法的类一定是抽象类;
- 抽象类也可以没有任何一个抽象方法;
- 抽象类也可以有非抽象方法;
2、接口
- 接口中的所有方法都是抽象的,且不用开发者显示定义(jdk8 之后,添加了静态方法和默认方法);
- 接口中任何域都默认是 static 和 final 的;
二者的区别:
- 类和接口是不同的类型,类是使用 class 关键字声明的,接口是使用 interface 关键字声明的;
- 抽象类是对类的抽象,而接口是对行为或者功能的抽象;
- 抽象类可以有具体的方法和属性,接口只能有抽象方法(jdk 1.8之前)和静态不可变常量;
- 抽象类只能被单继承,接口可以实现多继承;