🎯 什麼情境該想到我

當你「一個子類只用到、甚至根本不想要父類傳下來的部分方法與資料」的時候——它繼承了一堆用不上、甚至不該有的東西。

⚙️ 怎麼用(步驟 / 公式)

這味道是什麼徵兆:子類拒絕接受父類的遺贈,通常代表繼承關係用錯了——它們其實不是「是一種(is-a)」的關係,只是想重用一點碼而硬套繼承。若子類覆寫父類方法讓它報錯或什麼都不做,那是更強烈的警訊。

通常用哪些重構手法對治:

  • 以委託取代子類(Replace Subclass with Delegate)/以委託取代父類(Replace Superclass with Delegate):當繼承關係不恰當時,改用委託來重用,關係更誠實。
  • 下移函式(Push Down Method)/下移欄位(Push Down Field):若只是父類把「只有部分子類要用」的成員放太高,把它們下移到真正需要的子類。

🧪 我實際套用的紀錄

  • (待填)

⚠️ 注意 / 什麼時候不適用

  • 子類「用不到父類全部」其實相當常見,作者認為這種輕微情況通常不必大動干戈。
  • 只有當「拒絕遺贈」造成困惑或錯誤(尤其是拒絕父類的介面/行為)時才值得重構。

🔗 相關工具