所有引用基類的地方必須能夠透明地使用其子類的物件。通俗點講,只要父類能出現的地方子類就可以出現,而且替換為子類也不會產生任務異常。
我們知道物件導向語言的三大特性就是繼承、封裝、多台,黎克特制替換原則就是依賴於繼承、多型,建立抽象,通過抽象建立規範,在執行時替換成具體的物件,保證系統的拓展性、靈活性。
往往和開放封閉原則不離不棄。
父類中凡是已經實現好的方法(相對於抽象方法而言),實際上是在設定一系列的規範和契約,雖然它不強制要求所有的子類必須遵從這些契約,但是如果子類對這些非抽象方法任意修改,就會對整個繼承體系造成破壞。而黎克特制替換原則就是表達了這一層含義。
七 LSP 黎克特制替換原則
子類的物件提供了父類的所有行為,且加上子類額外的一些東西 可以是功能,可以是屬性 當程式基於父類實現時,如果將子類替換父類而程式不需修改,則說明符合lsp原則。這個解釋看的似懂非懂,再看下面更進一步的解釋 函式使用指向父類的指標或引用時,必須能夠在不知道子類型別的情況下使用子類的物件。子類必須能夠替...
設計原則之黎克特制替換原則(LSP)
lsp 黎克特制替換原則 兩種定義 型別t是型別s的子型別 所用引用基類的地方必須能透明的使用期子類物件 為什麼要使用黎克特制替換原則 讓繼承中的 利 大於 弊 發揮最大作用,同時減少 弊 所帶來的麻煩 繼承的優點是什麼?缺點?黎克特制替換要求凡是使用基類的地方,子類一定適用,因此子類必須具備基類的...
物件導向設計原則 黎克特制替換原則 LSP
要 求 子類可以替換父類並且出現在父類能夠出現的任何地方 這個原則也是在貫徹gof倡導的面向介面程式設計!在這個原則中父類應盡可能使用介面或者抽象類來實現!子類通過實現了父類介面,能夠替父類的使用地方!通過這個原則,我們客戶端在使用父類介面的時候,通過子類實現!意思就是說我們依賴父類介面,在客戶端宣...