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 皆可以單獨替代四邊形父類別。

擷取  

擷取  

擷取  

擷取  

擷取    

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 melomelo1988 的頭像
    melomelo1988

    melo 唐

    melomelo1988 發表在 痞客邦 留言(0) 人氣()