Java 中介面

介面就像 Java 類,但它只有靜態常量和抽象方法。Java 使用介面實現多重繼承。Java 類可以實現多個 Java 介面。介面中的所有方法都是隱式公共和抽象的。

宣告介面的語法

interface {
//methods
}

要在類中使用介面,請在類名後面新增關鍵字 implements,後跟介面名稱。

實現介面的示例

class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle

為什麼需要介面?

為了更好地理解 Java 介面的概念,讓我們看一個例子。 Media Player 類有兩個子類:CD PlayerDVD Player。每一個都有其獨特的播放音樂的實現方法。

另一個類 Combo driveCDDVD 都有繼承。它應該繼承哪種播放方法?這可能會導致嚴重的設計問題。因此,Java 不允許多重繼承。

現在讓我們再看一下 Dog 的例子吧。

假設你有一個要求,其中 dog 類繼承了 animalPet 類(見下圖)。但是你不能用 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: 儲存,編譯和執行程式碼。觀察輸出。

類和介面之間的區別

介面
在類中,你可以例項化變數並建立物件。 在介面中,你無法例項化變數並建立物件。
類可以包含具體(帶實現)方法 該介面不能包含具體(帶實現)方法
與類一起使用的訪問說明符是 privateprotectedpublic 在介面中只使用一個說明符 - Public

什麼時候使用介面和抽象類?

  • 當需要為一組子類定義模板時,使用抽象類
  • 在需要為其他類定義角色時使用介面,而不管這些類的繼承樹如何

必須知道介面的一些事實

  • Java 類可以實現多個 Java 介面。該類必須實現介面中宣告的所有方法。
  • 類應該重寫介面中宣告的所有抽象方法
  • 介面允許向物件傳送訊息,而不涉及它屬於哪個類。
  • 類需要為介面中宣告的方法提供功能。
  • 介面中的所有方法都是隱式公共和抽象的
  • 無法例項化介面
  • 介面引用可以指向其實現類的物件
  • 介面可以從一個或多個介面擴充套件。類只能擴充套件一個類,但可以實現任意數量的介面
  • 介面無法實現其他介面。如果需要,它必須擴充套件另一個介面。
  • 在另一個介面內宣告的介面稱為巢狀介面
  • 在宣告時,必須初始化介面變數。否則,編譯器將丟擲錯誤。
  • 該類無法在 java 中實現兩個具有相同名稱但返回型別不同的方法的介面。

摘要:

  • 實現介面的類需要為介面中宣告的方法提供功能
  • 介面中的所有方法都是隱式公共和抽象的
  • 無法例項化介面
  • 介面引用可以指向其實現類的物件
  • 介面可以從一個或多個介面擴充套件。類只能擴充套件一個類,但可以實現任意數量的介面