public
class
test
class
annoyance
extends
exception
class
sneeze
extends
annoyance
/* 9、類 examplea 繼承 exception,類 exampleb 繼承examplea。
有如下**片斷:
try catch(examplea e) catch(exception e)
輸出:examplea。(根據黎克特制代換原則[能使用父型別的地方一定能使用子型別],
抓取 examplea 型別異常的 catch 塊能夠抓住 try 塊中丟擲的 exampleb 型別的異常)
*/class
human
catch
( annoyance a )
//只有丟擲的異常小於等於catch中抓的異常型別,才能捕捉得到
//所以最後這個語句塊丟擲的異常肯定是sneeze型別的
//但是為什麼?上面的黎克特制代換原則,父類能出現的地方,子類一定出現
}catch
( sneeze s )
finally
}}
黎克特制代換原則
黎克特制代換原則 liskov substitution principle lsp 物件導向設計的基本原則之一。黎克特制代換原則中說,任何基類可以出現的地方,子類一定可以出現。lsp是繼承復用的基石,只有當衍生類可以替換掉基類,軟體單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的...
黎克特制代換原則
黎克特制代換原則 黎克特制代換原則 子型別必須能夠替換掉它們的父型別。就是說乙個軟體實體,如果使用的是乙個父類的話,那麼一定適用於其子類,而且,它覺察不出父類物件和子類物件的區別,也就是說,在軟體裡面,把父類都替換成它的子類,程式的行為沒有變化。只有當子類可以替換掉父類,軟體單位的功能不收到影響時,...
黎克特制代換原則
黎克特制代換原則 子型別必須能替換掉它們的父型別.只有當子類可以替換掉父類,軟體單位的功能不受到影響時,父類才能真正的被復用,而子類也能夠在父類的基礎上增加新的行為.比如說,貓類繼承動物類,動物類擁有吃喝叫跑等行為,當某一天,我們需要狗,牛,羊也擁有類似的行為,由於它們都是繼承於動物,所以除了更改例...