在說二者區別之前,首先看一看二者的一些特性,如下 1、2 所示:
1、抽象類
- 有抽象方法的類一定是抽象類;
- 抽象類也可以沒有任何一個抽象方法;
- 抽象類也可以有非抽象方法;
2、接口
- 接口中的所有方法都是抽象的,且不用開發者顯示定義(jdk8 之後,添加了靜態方法和默認方法);
- 接口中任何域都默認是 static 和 final 的;
二者的區別:
- 類和接口是不同的類型,類是使用 class 關鍵字聲明的,接口是使用 interface 關鍵字聲明的;
- 抽象類是對類的抽象,而接口是對行爲或者功能的抽象;
- 抽象類可以有具體的方法和屬性,接口只能有抽象方法(jdk 1.8之前)和靜態不可變常量;
- 抽象類只能被單繼承,接口可以實現多繼承;