假設我們要實作一個防盜門的功能:門具有「開」與「關」的行為,鎖則具備「上鎖」與「開鎖」的操作。根據物件導向設計,門與鎖應分別為獨立的類別。然而,防盜門既是一門,又有一把鎖,若讓防盜門同時繼承「門」與「鎖」兩個類別,將違反「is-a」關係(防盜門不是鎖),且 Java 僅支援單一繼承。此時,介面便能完美解決此問題。
在軟體工程中,介面是一種規範與標準,它約束類別的行為,僅包含方法特徵的集合,不提供方法實作。介面可視為一種特殊的抽象類別,但其表達方式與設計哲學與抽象類別截然不同:抽象類別利於程式碼重用,介面則有利於功能擴充與維護。
public abstract 方法(Java 8 起可包含 default 與 static 方法)。public static final 常數。[修飾符] interface 介面名稱 extends 父介面1, 父介面2, ... {
// 常數定義
// 方法定義
}
class 類別名稱 extends 父類別 implements 介面1, 介面2, ... {
// 類別成員
}
public,則專案全域可見;省略修飾符則僅在同一套件內可見。public static final,必須在定義時指定初值。public abstract 修飾。extends 建立繼承關係,一個介面可繼承多個介面,但不能繼承類別。