面象对象设计6大原则之三:里氏替换原则
轉載自?面象對象設計6大原則之三:里氏替換原則
里氏替換原則(LSP),The Liskov Substitution Principle
定義
所有引用基類的地方必須能透明地引用其子類的對象,即子類可以拓展父類的功能,但不能修改父類已有的功能。
也就是說在父類出現的地方子類也可以出現,并且替換為子類也不會報錯,引用者根本不需要知道引用的是父類還是子類,但是反過來就行不通了,子類出現的地方父類就不一定能出現并代替子類。
里氏替換原則的特點:
1、子類可以拓展父類的功能,但不能修改父類已有的功能,如果修改了父類已有的功能,可能導致父類定義的功能在子類覆蓋后不適用。
2、重載父類的方法時,子類的方法形參應該比父類更寬松。
3、實現父類的抽象方法時,子類的方法輸出結果應該比父類更加嚴格。
4、子類可以有自己獨特的私有方法,但是需要注意的是,如果子類不能完全實現父類的方法,或者父類的某一些方法在子類中已經不適用,這種情況則建議斷開父子關系,使用組合等方式代替繼承出現。
里氏替換原則的優缺點:
1、合理得用類的繼承關系,提高了代碼的復用性,但也增強了類與類之間的耦合性。
2、通過建立抽象,運行過程中具體實現取代抽象,保證了系統的可拓展性。
3、只要繼承父類就擁有父類的全部屬性和方法,這樣減少了代碼重復創建量共享了代碼但也約束了子類的行為,降低了系統靈活性。
我們平時開發中可能沒考慮這么多,亂覆蓋父類的方法,沒有多少聯系的繼承等很多打破了里氏替換的原則,這樣不顧后果的后果就是我們寫的程序存在著潛在的漏洞,而且出問題的機率也會顯著提升。
總結
以上是生活随笔為你收集整理的面象对象设计6大原则之三:里氏替换原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面象对象设计6大原则之二:开放封闭原则
- 下一篇: 适合修照片的电脑配置是怎样的?