接口(interface)
接口是抽象方法和常量值的集合。從本質上講,接口是一種特殊的抽象類,這種抽象類隻包含常量和方法的定義,而沒有變量和方法的實作。
格式:
interface 接口名{}
接口的出現将"多繼承"通過另一種形式展現出來,即"多實作"。
實作(implements)
class 類名 implements 接口名 {}
特點:
-
接口不能被執行個體化。
接口如何執行個體化呢?參照多态的方式,通過實作類對象執行個體化,這叫接口多态。
多态的形式:具體類多态,抽象類多态,接口多态。
多态的前提:有繼承或者實作關系; 有方法重寫; 有父類/接口)引用指向(子/實作)類對象
-
接口的實作類
要麼重寫接口中的所有抽象方法
要麼是抽象類
接口的成員特點
接口中的成員修飾符是固定的!
-
成員變量
隻能是常量
預設修飾符: public static final
-
構造方法
接口沒有構造方法,因為接口主要是對行為進行抽象的,是沒有具體存在
個類如果沒有父類,預設繼承自Object類
-
成員方法
隻能是抽象方法
預設修飾符: public abstract
繼承與實作的差別:
- 類與類之間稱為繼承關系:
- 隻能單繼承,可以多層繼承。((class))
- 類與接口之間是實作關系:
- 因為接口中的方法都是抽象的,必須由子類實作才可以執行個體化。可以單實作,也可以多實作;還可以在繼承一個類的同時實作多個接口。((class) extends (class) implements (interface1,interface2…))
- 接口與接口之間是繼承關系:一個接口可以繼承另一個接口,并添加新的屬性和抽象方法,并且接口可以多繼承。((interface) extends (interface1,interface2…))
抽象類和接口的差別
-
成員差別
抽象類 變量常量;有構造方法;有抽象方法,也有非抽象方法
接口 常量;抽象方法
- 關系差別