在 Java 中實現多個介面

Mohammad Irfan 2023年1月30日 2021年10月2日
  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