麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 課堂 > FAQ問答 > 正文

什么是里氏代換原則?(舉例說明)

2020-03-22 18:21:05
字體:
來源:轉載
供稿:網友
里氏代換原則

里氏替換原則LSP講的是基類和子類的關系。只有當這種關系存在時,里氏代換關系才存在。如果兩個具體的類A,B之間的關系違反了LSP的設計,(假設是從B到A的繼承關系)那么根據具體的情況可以在下面的兩種重構方案中選擇一種。

 ?php//舉例說明繼承的風險,我們需要完成一個兩數相減的功能,由類A來負責。html' target='_blank'>class a{public $width;public $height;public function func1($a, $b){  return $a - $b; $a = new a();echo $a- func1(100,50);//運行結果100-50=50

后來,我們需要增加一個新的功能:完成兩數相加,然后再與100求和,由類B來負責。即類B需要完成兩個功能:

采用類B繼承類A代碼如下:

class b extends a{  public function func1($a, $b){  return $a + $b; public function func2($a, $b){  return $this- func1($a, $b) + 100;$b = new b();echo $b- func2(100, 50);

假設類B在給方法起名時無意中重寫了父類的方法,造成所有運行相減功能的代碼全部調用了類B重寫后的方法,造成原本運行正常的功能fun1出現了錯誤(錯誤的原因是減法變成了加法而其他使用者并不知道。別總想著代碼是一個人寫的呦!還有大家沒有時間去逐行讀你的代碼,他們只是按照規則進行應用)。

里氏替換原則通俗的來講就是:子類可以擴展父類的功能,但不能改變父類原有的功能。它包含以下4層含義:

1、子類可以實現父類的抽象方法,但不能覆蓋父類的非抽象方法。

2、子類中可以增加自己特有的方法。

3、當子類的方法重載父類的方法時,方法的前置條件(即方法的形參)要比父類方法的輸入參數更寬松。

4、當子類的方法實現父類的抽象方法時,方法的后置條件(即方法的返回值)要比父類更嚴格。

看上去很不可思議,因為我們會發現在自己編程中常常會違反里氏替換原則,程序照樣跑的好好的。所以大家都會產生這樣的疑問,假如我非要不遵循里氏替換原則會有什么后果?

后果就是:你寫的代碼出問題的幾率將會大大增加。

以上就是什么是里氏代換原則?(舉例說明)的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 毛片免费在线 | 日韩精品免费一区二区三区 | 色999中文字幕 | 有兽焉免费动画 | 91麻豆精品国产91久久久点播时间 | 国产精品99久久99久久久二 | 激情久久一区二区 | 91一级毛片| 国产一区二区在线观看视频 | 色吧久久 | 国产成人精品一区在线播放 | 网站激情| 特级黄色一级毛片 | 天天曰夜夜操 | 视频在线亚洲 | 国产精品观看在线亚洲人成网 | 国产精品亚洲欧美一级在线 | 欧美激情999 | 国产精品男女 | 渔夫荒淫艳史 | 黄色高清av | 国产人成精品一区二区三 | 极品大长腿啪啪高潮露脸 | 一级黄色影片在线观看 | 免费在线国产 | 国产三级在线视频观看 | 亚洲一区二区三区日本久久九 | 男女污污视频网站 | 久久中文一区 | 黄色一级片在线免费观看 | 伊人网站 | 午夜精品福利视频 | 精品视频一区二区三区四区 | 九九热国产在线 | 欧美一级网 | 久草在线综合 | 国产成人精品网站 | 黄色av免费网站 | 欧美黄色一区 | 成人福利视频在线观看 | 成年免费视频黄网站在线观看 |