1. 程式人生 > >如何理解里氏替換原則?

如何理解里氏替換原則?

Liskov替換原則核心就是子類能完全替換它的基類。

看上去這個應該與生俱來的能力。面向物件的核心多型,不就是靠這一條實現的。或許從沒有遇到的過子類改寫基類的情況。程式世界可能出現這種情況,而且在不經意之間出現這種情況。比如“鳥”是基類,這個基類有一個“飛翔”的行為。當“鴕鳥”繼承了“鳥”,這就會引起麻煩,覆寫基類“飛翔”的行為吧,這樣就不再符合里氏替換原則。“鴕鳥”是不能替換它的基類了。再舉個例子,“長方形”是基類,“正方形”是一種特殊的長方形,理所應當“正方形”是“長方形”的子類。“長方形”有單獨改變長或寬的行為,對於“正方形”來說,就得改寫這兩個行為以保證長等於寬。這樣就違背了里氏替換原則。當長方形調整了長,又調整寬,在算面積的時候。正方形這個子類就會出錯。

在我看了,里氏替換原則是不容易違背的。這是OO的基礎。里氏替換原則如果不存在了,OO何在。

SOLID 五項原則介紹