| 維度 | 抽象類 | 接口 |
|---|---|---|
| 方法類型 | 可含普通方法 | 全為抽象方法(Java 8 前) |
| 屬性修飾 | 任意修飾符 | 隱含 public static final |
| 構造方法 | 有 | 無 |
| 靜態方法 | 可有 | Java 8 前不可有 |
| 繼承關係 | 單繼承 extends | 多實現 implements |
| 關鍵字 | abstract class | interface |
| 語義關係 | is-a(繼承) | like-a(能力) |
| 設計目的 | 代碼復用、公共實現 | 契約規範、解耦協作 |
Animal 抽象類(是動物),Flyable 接口(會飛)// 場景:商家發布廣告
// 需同時具備用戶信息、廣告信息能力
class MerchantAd implements UserInfo, AdInfo { ... }
// 若用抽象類則無法同時繼承 UserBase 和 AdBase
接口降低模塊耦合,抽象類提取共性實現,兩者互補而非互斥。