建立新型別時,若能克隆既有型別並修改/擴充,比從零開始強太多。繼承正是為此設計:
extends;private 成員;因介面相同,衍生類別具有與基底類別相同的型別。這不是單純的程式碼複製,而是型別系統層面的等價,支援向上轉型與動態繫結。
class ExtendedShape extends Shape {
void rotate() { ... } // Shape 無此方法
}
最簡單、最常用。但需謹慎:基底類別真的不需要這功能嗎?
class Circle extends Shape {
@Override void draw() { ... } // 實作圓形繪製邏輯
}
保持介面不變,改變具體行為。這是多型的核心用法。
繼承是「是一種」關係,強耦合(編譯期綁定)。組合(Composition/包含)是「有一個」關係,鬆耦合(執行期可動態替換成員物件)。優先考慮組合,必要時才繼承。
Java 透過 extends 實現繼承:自動取得基底介面、支援型別等價、允許擴充與覆寫。理解「介面重用」而非單純「程式碼重用」,是掌握物件導向設計的關鍵。