<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-126  評論-247  文章-5  trackbacks-0

    里氏代換原則LiskovSubstitution Principle,簡稱LSP)說的是:一個軟件實體如果使用的是一個基類的話,那么一定適用于其子類,而且它根本不能夠察覺出基類對象

    和子類對象的區別。
    也就是說,在軟件實體里面,把父類都換成其子類,程序的行為是不會發生變化的。

    里氏代換原則LSP):子類型必須能替換掉它的父類型,反過來代換原則不成立。

    里氏代換原則是繼承復用的基石,只有當衍生類可以替換掉基類,軟件單位的功能不會受到影響的時候,基類才能真正被復用,而衍生類也才能夠在基類的基礎上添加新的行為。


    一個簡單的例子:現有一個鳥類,一個鴕鳥類,如圖:

    在面向對象程序設計里面,對于鴕鳥類屬不屬于鳥類的問題,換句話說就是,鴕鳥類能不能繼承鳥類的問題,如圖:



    答案的否定的。這貌似有些荒唐,在生物界中,鴕鳥隸屬鳥綱沒有錯,

    但是在程序里面,鴕鳥類不能繼承鳥類,因為根據LSP(里氏代換原則),如果鴕鳥類繼承了鳥類,鳥類會飛,那么鴕鳥類也會飛了,但實際上鴕鳥類是不會飛的,只是能奔跑的很快。

    在 java 語言中,LSP(里氏代換原則)會在編譯期間被檢查,當然,這只是與實現無關的,純語法意義上的檢查,如果某一程序違反了這一原則,java 編譯器在編譯的時候是不會

    讓其通過的,這時就會出現編譯錯誤。

    但事實是,不會飛的鳥和會飛的鳥都屬于鳥綱(生物不好,不知道這樣說正確與否 *_*,不過不影響后面引出的話題),在程序設計里面看來,它們都有許多共性和特征,像這些

    不會飛的鴕鳥、企鵝等和會飛的鳥類,在類的設計上它們的共性體現在屬性和方法上,如果都將不會飛的和會飛的鳥類獨立,這明顯不是一種好的做法,怎么說呢?

    最明顯不過的一個條是,不管會飛的或不會飛的鳥,它們在上都屬于鳥綱,都應該能繼承鳥的一般屬性和行為,從代碼重構的角度來看(糟糕,扯到代碼重構了,不過既然問題

    已經引出,不妨把它解決掉),可以創建一個抽象的類,作為會飛的和不會飛的兩大鳥類的超類,然后就可以將會飛的和不會飛的鳥類的共同行為向上移到超類中,讓超類的子類

    可以通過繼承得到這些行為,從而解決會飛的鳥類和不會飛的鳥類行為不一致的問題。如圖:



      
    posted on 2012-08-02 13:18 fancydeepin 閱讀(888) 評論(1)  編輯  收藏

    評論:
    # re: 里氏代換原則(LSP)[未登錄] 2013-03-15 21:16 | ccc
    請問博主:
    如果鴕鳥類繼承了鳥類,鳥類會飛,那么鴕鳥類也會飛了,但實際上鴕鳥類是不會飛的,只是能奔跑的很快。

    這句話本身有問題,"如果鴕鳥類繼承了鳥類,鳥類會飛,那么鴕鳥類也會飛了",這句話這么推論是正確的,為什么會出現錯誤的結果呢?因為前提弄錯了,鳥類不一定都會飛。  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲av无码天堂一区二区三区| 成人免费一区二区三区在线观看| 亚洲视频在线免费| 色屁屁在线观看视频免费| 日本一区二区三区日本免费| 亚洲狠狠色丁香婷婷综合| 四虎www免费人成| 中文无码亚洲精品字幕| 插B内射18免费视频| 亚洲jizzjizz少妇| 免费在线观看的黄色网址| 亚洲成a人片在线不卡一二三区 | 99亚洲精品高清一二区| 日本中文字幕免费高清视频| 久久亚洲sm情趣捆绑调教| 国产h肉在线视频免费观看| 在线综合亚洲中文精品| 看全色黄大色大片免费久久| 黄人成a动漫片免费网站| 国产亚洲精品看片在线观看| 中文字幕久精品免费视频| 亚洲黄色免费观看| 成年在线观看免费人视频草莓| 亚洲高清一区二区三区电影| 亚洲精品成人区在线观看| 在线播放免费人成毛片乱码| 亚洲网站在线播放| 韩国二级毛片免费播放| 一个人看的免费视频www在线高清动漫| 亚洲综合国产一区二区三区| 亚欧人成精品免费观看| 亚洲AV无码一区二区三区牲色 | 亚洲国产一区二区三区在线观看| 亚洲中文无韩国r级电影| 9277手机在线视频观看免费| 亚洲欧美中文日韩视频| 亚洲性猛交XXXX| 久久久久久免费视频| 久久精品成人免费观看97| 亚洲一区二区三区免费观看| 亚洲人成网站在线观看青青|