黎克特制代換原則(企鵝是不是鳥!)

2021-07-25 04:44:12 字數 420 閱讀 1413

看了看《大話設計模式》這本書,寫的感覺太棒了,例子通俗易懂,簡單的對話引出設計模式的例子。

黎克特制代換原則(lsp):子類必須能夠替換掉他的父類[asd]

子類繼承了父類,所以子類可以以父類的身份出現!

那麼問題來了,物件導向設計時,乙個鳥類,乙個企鵝類,鳥類中有乙個   +飛()的方法,那麼企鵝可以繼承鳥這個類嗎?

按照常識來說,企鵝是特殊的鳥,雖然不會飛也是鳥,所以可以繼承!!

但是,這是錯的,子類擁有父類所有非private的行為和屬性。鳥會飛,而企鵝不會,儘管在生物學上企鵝是鳥,但是在這個例子中,企鵝是不能繼承這個鳥類的,因為企鵝不會飛,所以它在這裡不能以父類的身份出現,除非企鵝會飛,才能去繼承!!

黎克特制代換原則

黎克特制代換原則 liskov substitution principle lsp 物件導向設計的基本原則之一。黎克特制代換原則中說,任何基類可以出現的地方,子類一定可以出現。lsp是繼承復用的基石,只有當衍生類可以替換掉基類,軟體單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的...

黎克特制代換原則

黎克特制代換原則 黎克特制代換原則 子型別必須能夠替換掉它們的父型別。就是說乙個軟體實體,如果使用的是乙個父類的話,那麼一定適用於其子類,而且,它覺察不出父類物件和子類物件的區別,也就是說,在軟體裡面,把父類都替換成它的子類,程式的行為沒有變化。只有當子類可以替換掉父類,軟體單位的功能不收到影響時,...

黎克特制代換原則

黎克特制代換原則 子型別必須能替換掉它們的父型別.只有當子類可以替換掉父類,軟體單位的功能不受到影響時,父類才能真正的被復用,而子類也能夠在父類的基礎上增加新的行為.比如說,貓類繼承動物類,動物類擁有吃喝叫跑等行為,當某一天,我們需要狗,牛,羊也擁有類似的行為,由於它們都是繼承於動物,所以除了更改例...