可以解讀為:派生類(子類)物件可以在程式中代替其基類(超類)物件。
子類可以擴充套件父類的功能,但不能改變父類原有的功能。
黎克特制替換原則對繼承進行了規則上的約束,這種約束主要體現在四個方面:
子類可以實現父類的抽象方法,但不能重寫父類的非抽象方法。
子類中可以增加自己特有的方法。
當子類的方法過載父類的方法時,方法的前置條件(即方法的輸入/入參)要比父類 方法的輸入引數更寬鬆。如父類方法的入參是hashmap那麼子類過載方法的入參因該是map。
當子類實現父類的抽象方法時,方法的後置條件(即 方法的輸出/返回值)要比父類更嚴格或相等。
設計原則之黎克特制替換原則
只看概念比較抽象,先上例項。乙個違反黎克特制替換原則的例子 乙個遵守黎克特制替換原則的例子。繪製圖形 void drawshape shape shape else if shape.type shape.square else 新增影象必需要修改drawshape方法,新增if判斷來支援新的圖形,...
設計原則之黎克特制替換原則(LSP)
lsp 黎克特制替換原則 兩種定義 型別t是型別s的子型別 所用引用基類的地方必須能透明的使用期子類物件 為什麼要使用黎克特制替換原則 讓繼承中的 利 大於 弊 發揮最大作用,同時減少 弊 所帶來的麻煩 繼承的優點是什麼?缺點?黎克特制替換要求凡是使用基類的地方,子類一定適用,因此子類必須具備基類的...
六 設計原則之黎克特制替換原則
今天的部落格主題 設計原則和模式 設計原則之黎克特制替換原則 黎克特制替換原則 lsp liskov substitution principle 任何基類可以出現的地方,子類一定可以出現。黎克特制替換原則是繼承復用的基石,只有當衍生類可以替換掉基類,基類的功能不收影響,基類才能真正被復用,衍生類也...