1. 程式人生 > >[面向物件六大原則] 里氏替換原則(LSP)

[面向物件六大原則] 里氏替換原則(LSP)

里氏替換原則 - Liskov Substitution Principle

定義一:如果對每一個型別為S的物件O1,都有型別為T的物件O2,使得以T定義的所有程式P在所有的物件O1都替換成O2時,程式P的行為沒有發生變化,那麼型別S是型別T的子型別。

定義二:所有引用基類的地方必須能透明地使用其子類的物件。

通俗來講:只要父類能出現的地方子類就可以出現,而且替換為子類也不會出現錯誤和異常,使用者根本不需要知道是父類還是子類。但是反過來就不可以,有子類出現的地方,父類未必就能適應。

里氏替換原則依賴於面向物件設計語言三大特性中的“繼承”和“多型”。

里氏替換原則的核心原理是抽象。抽象是依賴於繼承這個特性。

繼承的優點:

①程式碼重用,減少建立類的成本,每個子類都擁有父類的方法和屬性;

②子類與父類基本相似,但又與父類有所區別;

③提高程式碼的可擴充套件性。

繼承的缺點:

①繼承是侵入性的,只要繼承就必須擁有父類的方法和屬性;

②可能造成子類程式碼冗餘、靈活性降低,因為子類必須擁有父類的方法和屬性。