在 Java 物件導向程式設計中,類別繼承是實現程式碼重用與擴充功能的基石。本文將系統性地探討繼承機制、方法覆寫、介面應用、類別轉型以及 null、this、super 等關鍵字的運作原理,幫助開發者建立扎實的核心觀念。
繼承允許我們在現有類別(父類別)的基礎上定義新類別(子類別),自動擁有父類別的非私有屬性與方法。透過 extends 關鍵字即可實現。例如,若有一個 Rectangle 類別,我們想建立一個能填充顏色的 FillRect,只需繼承 Rectangle 並新增繪製邏輯,無需重寫寬高計算等基礎代碼。
import Shapes.Rectangle;
class FillRect extends Rectangle {
public FillRect(int w, int h) {
super(w, h); // 呼叫父類別建構子
}
// 新增或覆寫方法...
}
關鍵點:子類別建構子必須透過 super(...) 明確呼叫父類別建構子,以完成父類別欄位的初始化。
繼承而來的方法若不符合需求,可在子類別中「覆寫」。覆寫規則:方法簽章必須相同,存取權限不可比父類別更嚴格,且 final 修飾的方法禁止覆寫。範例中 drawRect() 被覆寫為填充矩形而非僅繪製輪廓,並善用 StringBuffer 避免字串拼接產生大量暫存物件,提升效能。
介面是一種完全抽象的類型,僅包含常數與抽象方法。類別透過 implements 關鍵字實作介面,且可同時實作多個介面,彌補 Java 單一繼承的限制。介面的優在於「契約先行」:定義好 Shape 介面擁有 draw() 方法,所有實作類別皆保證擁有此行為,利於多型設計與解耦。
X x = new Y();),安全且自動發生,可呼叫父類別定義的方法。ClassCastException。null、this、super| 關鍵字 | 說明 |
|---|---|
null | 表示「無物件參考」,可作為任何參考型別的初始值,或傳遞給需物件參數的方法。 |
this | 指向目前物件實例,常用於區分同名欄位與參數、傳遞自身參考、或在建構子中呼叫另一個建構子。 |
super | 指向父類別實例,用於呼叫父類別被覆寫的方法或建構子(super(...))。 |
掌握繼承、覆寫、介面、轉型與特殊參考,是撰寫靈活、可維護 Java 程式的關鍵。善用繼承減少重複,用介面定義契約,謹慎進行向下轉型,並理解 this/super 的作用域,能讓物件導向設計更得心應手。