介面與內部類提供了將「介面與實作分離」的結構化方案。介面的關鍵字 interface 產生完全抽象的類型,所有實作該介面的類別都擁有統一的型態契約。
abstract 機制強制此限制| 維度 | 介面 | 抽象類 |
|---|---|---|
| 實作關係 | implements,可多重實作 | extends,單一繼承 |
| 方法預設 | Java 8+ 可有 default 方法 | 可包含完整實作方法 |
| 欄位 | 隱含 public static final | 可定義實例變數 |
| 建構子 | 無 | 可有(供子類呼叫) |
| 解耦程度 | 完全解耦(無實作綁定) | 部分耦合(共享基底實作) |
「任何抽象性都應源自真實需求。恰當原則是優先選擇具體類別而非介面。從類別開始,當介面的必要性變得明確時,再重構引入介面。」
Serializable、Cloneable)default 方法:提供預設實作,不破壞既有實作類static 方法:工具方法歸屬介面命名空間private 方法:介面內部複用邏輯這使介面能承擔更多「特質」角色,縮小與抽象類的差距,但核心選擇原則不變。