在 Java 中實現多個介面

Mohammad Irfan 2023年10月12日
  1. 在 Java 中實現多個介面
  2. 介面擴充套件了 Java 中的多介面
在 Java 中實現多個介面

本教程介紹了一個類如何在 Java 中實現多個介面,並列出了一些示例程式碼來理解該主題。

在 Java 中,介面類似於類,只是它只能有抽象方法。介面被稱為類的藍圖,實現介面的類必須為所有抽象方法提供實現或宣告抽象本身。

在 Java 中,類只能擴充套件一個類,但可以實現多個介面。那麼,如果有人問你,一個類可以實現多個介面嗎?然後,說是。

讓我們從一些程式碼示例開始來理解這個概念。這是多介面實現的一般結構。

class A implements B, C, D
....Z

實現多個介面的 Java 集合中的現有類是:

除了開發者程式碼,如果我們留意 JDK 原始碼,我們會發現 Java 使用了 ArrayList、HashMap 類等多種介面實現。

ArrayList<E> 實現多個介面

public class ArrayList<E>
    extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
// Implements multiple interfaces

HashMap<K,V> 實現多個介面

public class HashMap<K, V> extends AbstractMap<K, V> implements Map<K, V>, Cloneable, Serializable
// Implements multiple interfaces

在 Java 中實現多個介面

Java 允許一個類實現多個介面。所以,我們可以隨心所欲地實現。在這個例子中,我們建立了 3 個介面,然後使用一個類來實現它們。

在使用介面時,請確保該類實現其所有抽象方法。請參考下面的示例,其中我們實現了所有 3 個介面的所有方法。

package javaexample;
interface A {
  void showA();
}
interface B {
  void showB();
}
interface C {
  void showC();
}
public class SimpleTesting implements A, B, C {
  public static void main(String[] args) {
    SimpleTesting st = new SimpleTesting();
    st.showA();
    st.showB();
    st.showC();
  }
  @Override
  public void showA() {
    System.out.println("Interface A");
  }
  @Override
  public void showB() {
    System.out.println("Interface B");
  }
  @Override
  public void showC() {
    System.out.println("Interface C");
  }
}

輸出:

Interface A
Interface B
Interface C

介面擴充套件了 Java 中的多介面

一個介面還可以實現(擴充套件)多個介面。Java 允許像類一樣介面並且可以實現多個介面。

在介面的情況下,我們應該使用 externds 關鍵字代替 implements 來實現介面。請參考下面的示例。

package javaexample;
interface A {
  void showA();
}
interface B {
  void showB();
}
interface C {
  void showC();
}
interface D extends A, B, C {
  void showD();
}
public class SimpleTesting implements D {
  public static void main(String[] args) {
    SimpleTesting st = new SimpleTesting();
    st.showA();
    st.showB();
    st.showC();
    st.showD();
  }
  @Override
  public void showA() {
    System.out.println("Interface A");
  }
  @Override
  public void showB() {
    System.out.println("Interface B");
  }
  @Override
  public void showC() {
    System.out.println("Interface C");
  }
  @Override
  public void showD() {
    System.out.println("Interface D");
  }
}

輸出:

Interface A
Interface B
Interface C
Interface D

重要的是,如果在類中實現介面,則必須提供抽象方法的實現,否則 java 編譯器將引發錯誤。請參考下面的示例。

package javaexample;
interface A {
  void showA();
}
interface B {
  void showB();
}
public class SimpleTesting implements A, B {
  public static void main(String[] args) {
    SimpleTesting st = new SimpleTesting();
    st.showA();
    st.showB();
  }
  @Override
  public void showA() {
    System.out.println("Interface A");
  }
}

輸出:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The type SimpleTesting must implement the inherited abstract method B.showB()

相關文章 - Java Interface