Java 中介面
介面就像 Java 類,但它只有靜態常量和抽象方法。Java 使用介面實現多重繼承。Java 類可以實現多個 Java 介面。介面中的所有方法都是隱式公共和抽象的。
宣告介面的語法
interface {
//methods
}
要在類中使用介面,請在類名後面新增關鍵字 implements
,後跟介面名稱。
實現介面的示例
class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle
為什麼需要介面?
為了更好地理解 Java 介面的概念,讓我們看一個例子。 Media Player
類有兩個子類:CD Player
和 DVD Player
。每一個都有其獨特的播放音樂的實現方法。
另一個類 Combo drive
從 CD
和 DVD
都有繼承。它應該繼承哪種播放方法?這可能會導致嚴重的設計問題。因此,Java 不允許多重繼承。
現在讓我們再看一下 Dog
的例子吧。
假設你有一個要求,其中 dog
類繼承了 animal
和 Pet
類(見下圖)。但是你不能用 Java 擴充套件兩個類。那你會怎麼做?解決方案是介面 Interface
。
介面規則說,
- 介面是 100%抽象類,只有抽象方法。
- 類可以實現任意數量的介面。
Dog
類可以擴充套件到 Animal
類,並將介面實現為 Pet
。
Java 介面示例:
步驟 1: 將以下程式碼複製到編輯器中。
interface Pet{
public void test();
}
class Dog implements Pet{
public void test(){
System.out.println("Interface Method Implemented");
}
public static void main(String args[]){
Pet p = new Dog();
p.test();
}
}
步驟 2: 儲存,編譯和執行程式碼。觀察輸出。
類和介面之間的區別
類 | 介面 |
---|---|
在類中,你可以例項化變數並建立物件。 | 在介面中,你無法例項化變數並建立物件。 |
類可以包含具體(帶實現)方法 | 該介面不能包含具體(帶實現)方法 |
與類一起使用的訪問說明符是 private 、protected 和 public 。 |
在介面中只使用一個說明符 - Public 。 |
什麼時候使用介面和抽象類?
- 當需要為一組子類定義模板時,使用抽象類
- 在需要為其他類定義角色時使用介面,而不管這些類的繼承樹如何
必須知道介面的一些事實
- Java 類可以實現多個 Java 介面。該類必須實現介面中宣告的所有方法。
- 類應該重寫介面中宣告的所有抽象方法
- 介面允許向物件傳送訊息,而不涉及它屬於哪個類。
- 類需要為介面中宣告的方法提供功能。
- 介面中的所有方法都是隱式公共和抽象的
- 無法例項化介面
- 介面引用可以指向其實現類的物件
- 介面可以從一個或多個介面擴充套件。類只能擴充套件一個類,但可以實現任意數量的介面
- 介面無法實現其他介面。如果需要,它必須擴充套件另一個介面。
- 在另一個介面內宣告的介面稱為巢狀介面
- 在宣告時,必須初始化介面變數。否則,編譯器將丟擲錯誤。
- 該類無法在 java 中實現兩個具有相同名稱但返回型別不同的方法的介面。
摘要:
- 實現介面的類需要為介面中宣告的方法提供功能
- 介面中的所有方法都是隱式公共和抽象的
- 無法例項化介面
- 介面引用可以指向其實現類的物件
- 介面可以從一個或多個介面擴充套件。類只能擴充套件一個類,但可以實現任意數量的介面