物件是類別的實例。若將物件比作房子,類別就是設計圖。OO 設計的核心在類別設計,而非物件設計。設計孤立類別容易,難在正確設計基底類別與派生類別。
繼承可提高程式碼復用性,但因「太好用、太容易用」,必須制定嚴格使用規則防止濫用。
若類別 A、B 毫無關聯,不得讓 B 繼承 A 以「白占便宜」獲取功能。這如同讓健壯青年無故吃人參補身,違背邏輯且破壞設計純粹性。
若邏輯上 B 是 A 的「一種」,允許繼承。例:
class Man : public Humanclass Boy : public Man規則看似簡單,實際應用常有意外:
生物學上鴕鳥是鳥,但鴕鳥不會飛。若 Bird 有 Fly(),Ostrich 繼承後 Ostrich::Fly 是什麼?拋出例外?空實作?皆違反 Liskov 替換原則。
數學上圓是特殊橢圓,但橢圓有長短軸,圓繼承後擁有多餘屬性,違反「介面隔離」。
若邏輯上 B 是 A 的「一種」,且 A 的所有功能與屬性對 B 均有意義,才允許 B 繼承 A。
這實際上是 Liskov 替換原則 (LSP) 的前身表述:子類別必須能無縫替換父類別,不破壞程式正確性。