close
1.Liskov Substitution Principle 定義:
子類別可以替代父類別,但父類別並不可以取代子類別。
2.情境
假設我們有一個Rectangle和一個Square。
Question : Square is a Rectangle ?
Answer ; Yes
我們可以定義出以下類別關係:
問題:
Square類別對Height and Heiget處理,和Rectangle處理方式並不相同,Rectangle單獨改變長寬而Square則同時改變長寬。
所以兩者繼承之關係其實並不成立。
3.問題之解法
我們可以提取存在於兩者間的公共抽象基底類別Quadrilaterals(四邊形),我們定義Quadrilaterals的公共屬性以及方法,
Square and Rectangle 繼承這些共用屬性以及方法,且可以自行新增自己特有之方法。
且此舉也符合LSP之定義Rectangle and Square 皆可以單獨替代四邊形父類別。
全站熱搜