若 CD 和 DVD 為無關類別,管理媒體庫需分別撰寫 addCD()、addDVD() 等方法,新增媒體類型時還得持續增加方法,缺乏擴充性。且兩者共享大量屬性(標題、播放時間、評論等),若各自定義會造成大量程式碼重複。繼承解決了這兩個問題:建立共同父類別 Item,子類別自動獲得共同屬性,管理類別只需一個 add(Item item) 方法即可處理所有子類別。
private 成員子類別無法直接存取,需透過父類別 public 方法間接存取| 修飾詞 | 可存取範圍 |
|---|---|
| public | 所有類別 |
| protected | 自身、子類別、同套件類別 |
| default (無修飾詞) | 自身、同套件類別 |
| private | 僅自身 |
super(參數) 呼叫父類別建構子,初始化繼承而來的成員super() 參數決定呼叫哪個父類別建構子super(),預設呼叫父類別無參數建構子;若父類別無無參建構子,編譯報錯子類別定義與父類別同名、同參數的方法即構成覆寫。父類別方法被隱藏,若需在子類別中呼叫父類別版本,使用 super.方法名()。
繼承是物件導向設計的基石,善用它能大幅提升程式碼復用性與維護性。