在 Java 中實現多個介面
Mohammad Irfan
2023年10月12日
本教程介紹了一個類如何在 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()