什麼是黎克特制替換原則?
黎克特制代換原則(liskov substitution principle lsp)物件導向設計的基本原則之一。 黎克特制代換原則中說,任何父類可以出現的地方,子類一定可以出現。 lsp是繼承復用的基石,只有當派生類可以替換掉基類,軟體單位的功能不受到影響時,基類才能真正被復用,而派生類也能夠在基類的基礎上增加新的行為。(子類可以替換父類)
因為繼承帶來的侵入性,增加了耦合性,也降低了**靈活性,父類修改**,子類也會受到影響,此時就需要黎克特制替換原則。
繼承的優缺點
繼承有一些優點:
提高**的重用性,子類擁有父類的方法和屬性;
提高**的可擴充套件性,子類可形似於父類,但異於父類,保留自我的特性;
缺點:侵入性、不夠靈活、高耦合
繼承是侵入性的,只要繼承就必須擁有父類的所有方法和屬性,在一定程度上約束了子類,降低了**的靈活性;
增加了耦合,當父類的常量、變數或者方法被修改了,需要考慮子類的修改,所以一旦父類有了變動,很可能會造成非常糟糕的結果,要重構大量的**。
黎克特制替換思維導圖
情況舉例**
情況一:子類物件能夠替換其父類
student stu=
newstudent()
;person p =stu;
p.show()
;
情況二:父類物件不能直接轉換子類
person p=
newperson()
;student stu =
(student)p;
stu.
sayhello()
;
情況三:new的時候new的是子類,再轉換這個子類的時候可以
person p=
newteacher()
;teacher t =
(teacher)p;
t.sayhi()
;
情況四:new的是子類,轉換的另乙個子類,報異常
person p =
newteacher()
;student stu =
(student)p;
stu.sayhello;
黎克特制替換原則
黎克特制替換原則 黎克特制代換原則 liskov substitution principle lsp 物件導向設計的基本原則之一。黎克特制代換原則中說,任何基類可以出現的地方,子類一定可以出現。lsp是繼承復用的基石,只有當衍生類可以替換掉基類,軟體單位的功能不受到影響時,基類才能真正被復用,而衍...
黎克特制替換原則
黎克特制替換原則更多的說的是子類與父類的關係的一種原則,子類必須實現父類的所有方法,所有能夠放子類的地方一定能夠放父類。但是這裡的話,我們講有的時候在我們的業務中,有的子類肯定是有個性化的特徵的,比如真槍和玩具槍,真槍能射出子彈,但是玩具槍就不能,那麼這個時候,我們或者通過抽象類,通過抽象類是我們可...
黎克特制替換原則
黎克特制替換原則,主要是乙個關於繼承的規範原則,它要求我們在軟體中寫繼承關係時,所有引用父類的地方必須能夠 透 明地使用其子類物件 子類可以實現父類所提供的抽象 方法,但不要去重寫父類已經實現的方法,或者過載父類的 構 造。要維護繼承的傳遞性,當然很多地方為這個原則打了個 比喻為 龍生龍,鳳生鳳,老...