接口可以了解為一種特殊的類,
class: 定義類
interface :定義接口
接口:不屬于繼承體系,是表現出某一個對象擴充出的功能
成員:
- 常量 :public static final
- 抽象方法: public abstract
由于接口中的成員是固定的,并且修飾符也是固定的,如果漏寫了某個修飾符,沒有關系,編譯器自動補全。
特點:
1.接口不能執行個體化
2.接口應該有子類,子類實作(implements)接口,子類如果想要能建立對象,必須實作所有的抽象方法,否則子類還是一個抽象類。
3.接口支援多态,父類型接口引用指向實作類對象
類-----類:單繼承
類-----接口:多實作
接口-------接口:多繼承
class A extends B implements C{}
類A繼承了B同時實作了C,B和C沒有關系
class A extends B{}
class B implements C{}
類A繼承了B,B實作了C,A-->B--->C
接口使用總結:
- 接口可以描述事物不屬于繼承體系中的擴充的功能;
- 接口可以定義規則
接口好處:
- 支援多态,提高了代碼的擴充性
- 彌補了java中的單繼承特點,接口與接口間多繼承,類與接口可以多實作
接口和抽象類的差別:
1從聲明上:
(1)抽象類是一個類,使用class聲明,還需要使用abstract修飾
(2)接口不是一個類,使用interface聲明
2.從能夠書寫的成員上看:
(1)抽象類是一個類,可以書寫類中可以書寫的成員,和抽象函數。
(2)接口隻能書寫成員變量和抽象函數,而且修飾符是固定的。
3.從有無構造函數上看;
(1)抽象類必須有構造函數
(2)接口沒有構造函數
4.從作用上看:
(1)抽象類是父類,用來描述所有子類的共性資訊的,隻是描述的有些功能是不具體的。
(2)接口是用來描述不屬于繼承體系的擴充功能的,還可以定義規則。
5.繼承關系上:
(1)抽象類和類之間是繼承關系,隻支援單繼承和多重繼承。
(2)接口和類之間是實作關系,一個實作類可以實作多個接口
(3)接口和接口之間是繼承關系,可以多繼承和多重繼承
java1.8的新特性:
在接口中可以寫有方法體的方法,但是必須加關鍵字 default。
加上此關鍵字後即可在接口裡面寫有方法體的方法了。