里氏替換原則定義有點煩人,簡單來說就是:
父類別能出現的地方,子類別就可以出現,且要能夠做到替換而不出現任何錯誤或異常。
反之就不行,子類別出現的地方,父類別不一定能替換。
簡單的幾句話其實包含了幾層含義:
- 子類別必須完全實作父類別的方法。
- 子類別可以有屬於自己的屬性和方法。
- 覆寫或實作父類別的方法時,輸入參數要與父類別定義的一樣,或是更寬鬆。
- 覆寫或實作父類別的方法時,輸出結果可以縮小。
里氏替換原則的重點就是要增加程式的強健性,讓版本升級的時候也能有很好的兼容性。就算子類別增加了,也不影響其他子類別。
實際使用的情況是,每個子類別分別處理不同的業務含義,而參數定義是使用父類別,實際上傳遞的是子類別,然後就可以完成不同的業務邏輯。