1. 程式人生 > >設計模式(二)--里氏替換原則(Java的繼承規範)

設計模式(二)--里氏替換原則(Java的繼承規範)

昨天有說到單一職責原則是針對介面的思維拓展,有沒看過的,可以看看!https://blog.csdn.net/newlifemain/article/details/100184642

      今天我們來看看針對Java中繼承的里氏替換原則(LSP);里氏替換原則是為良好的繼承定義了一個規範。Java中使用extends關鍵字實現繼承,java中的繼承是單一繼承的,一個子類繼承一個父類;是不是忘了什麼是Java中的繼承了?你完了,走吧你.....,..

java中的繼承就是告知你擁有父類的方法和屬性,然後你就可以覆寫父類的方法。

在日常開發中,什麼時候該繼承父類?什麼時候該覆寫父類的方法?什麼時候該過載父類的方法?什麼才是里氏替換原則的標準?繼承、覆寫、過載、標準....啥?我走吧!!!莫慌,給在下一個機會,我們好好說說吧!剛開始看到這個原則的時候,我已經在思考這些有的沒的了,以前在開發中使用繼承,不過就是提高一下程式碼複用。現在你跟我講這個迷迷糊糊的里氏替換原則,我真聽不下去了!!!放心,我們沒啥程式碼看的,我們就是叨叨。在Java中繼承就是子類跟父類的關係,一個子類繼承一個父類,就像你的兒子就只有一位父親,Java中的繼承是單一繼承的原則的。好了,繼承的概念理解了嗎?

什麼時候該繼承父類?這個有了解嗎?

: 我的理解是在類中呼叫其他類時務必使用其他類的父類或介面,比如說我們現在要頻繁的操作資料庫。那麼是不是每一次都要開關資料庫,獲得連線並進行增刪該查方法的呼叫。這個時候為了方便起見,就把這個共同的操作寫成一個父類,然後讓子類去繼承它,那麼就不用在寫相同的程式碼了,這樣也減少了程式碼的冗餘。

什麼時候該覆寫父類的方法?什麼時候該過載父類的方法?

在里氏替換原則(LSP)中的解析是隻要有父類能出現的地方,子類就可以出現,替換子類也不會產生任何錯誤或異常。通俗來說:一個程式如果使用的是一個父類的話, 那麼一定適用於其子類, 而察覺不出父類物件和子類物件的區別。 也即是說,在程式裡面, 把父類替換成它的子類, 程式的行為不會有變化, 簡單地說, 子型別必須能夠替換掉它們的父型別。

如果你非得問什麼時候覆寫?什麼時候該過載?

如果你理解java中子類覆寫父類,子類過載父類的規範,你還會如此問嗎?

覆寫

1.父類方法名稱功能不足,但必須使用這個方法名,所以必須採用覆寫。

2.被子類覆寫的方法不能夠比父類更加嚴格的訪問許可權。開發中一般都使用public.

3.如果父類使用了private宣告,那麼對於子類是不可見的,此時子類並沒有覆寫父類方法,是子類自己的方法。

過載:

子類和父類方法名相同,引數型別或者順序不同。

覆寫與過載的區別  :

覆寫是子類繼承父類方法,實現覆寫;

過載是在一個類中,多個方法名相同,但是引數不同。

里氏替換原則目的就是增強程式的健壯性,在專案開發中,採用里氏替換原則設計程式時,應該儘量避免設計子類擁有自己的方法和屬性,應儘量把子類當父類使用。因為如果把子類單獨作為一個業務來使用,則會讓程式碼間的耦合關係變得撲朔迷離,缺乏類替