里氏替換原則(SLP)
就不說高大上的學(xué)術(shù)定義了,通俗講,就是只要父類能出現(xiàn)的地方子類就可以出現(xiàn),而且替換為子類也不會產(chǎn)生任何的錯誤或異常,使用者可能根本就不需要知道是父類還是子類。講白了,里氏替換原則的核心原理就是抽象(抽象有依賴于繼承這個特性)。下面我們順便說下繼承的優(yōu)缺點。
繼承的優(yōu)點:
1)代碼重用,減少創(chuàng)建類的成本,每個子類都擁有父類的所有方法和屬性。
2)子類與父類基本相似,但又與父類有所區(qū)別
3)提高代碼的可擴(kuò)展性
繼承的缺點:
1)繼承是侵入式的,只要繼承必須擁有父類的所有屬性和方法
2)可能造成子類代碼冗余、靈活性降低,因為子類必須擁有父類的屬性和方法
里氏替換原則和開閉原則往往是生死相依、不離不棄的,通過里氏替換來達(dá)到對擴(kuò)展開放,對修改關(guān)閉的效果。
然而,這兩個原則都同時強(qiáng)調(diào)了一個OOP的重要特性——抽象,
因此,在開發(fā)過程中運用抽象是走向代碼優(yōu)化的重要一步。