繼承(Inheritance)是物件導向程式設計的核心機制,但也容易被誤用。
本章介紹如何在繼承階層中移動方法與欄位,以及何時該用委託(Delegation)取代繼承。

優先用繼承來快速建立原型,日後若發現繼承帶來過多耦合,再重構為委託
這種「先繼承後委託」的策略能兼顧開發效率與長期可維護性。

flowchart TB
    subgraph up ["⬆️ Pull Up(提升至父類別)"]
        direction TB
        U1[子類別] -->|Method/Field| U2[父類別]
    end
    subgraph down ["⬇️ Push Down(下移至子類別)"]
        direction TB
        D1[父類別] -->|Method/Field| D2[子類別]
    end
    subgraph delegate ["🔄 委託取代繼承"]
        direction LR
        E1[繼承關係] -->|重構| E2[委託關係]
    end