亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

里氏代換原則是什么

發布時間:2020-10-29 14:08:48 來源:億速云 閱讀:125 作者:小新 欄目:編程語言

這篇文章主要介紹里氏代換原則是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

里氏代換原則

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

<?php
//舉例說明繼承的風險,我們需要完成一個兩數相減的功能,由類A來負責。
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、當子類的方法實現父類的抽象方法時,方法的后置條件(即方法的返回值)要比父類更嚴格。

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

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

以上是里氏代換原則是什么的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

谢通门县| 岢岚县| 通道| 安乡县| 松滋市| 闽侯县| 西华县| 绩溪县| 江城| 资源县| 高尔夫| 鄂州市| 沁水县| 新野县| 军事| 乌审旗| 隆昌县| 张家港市| 吉首市| 岳池县| 镇康县| 阿图什市| 寻甸| 页游| 肃宁县| 巨鹿县| 邯郸县| 出国| 旬邑县| 资源县| 南丰县| 哈尔滨市| 海淀区| 留坝县| 乾安县| 乌审旗| 荔浦县| 永和县| 高青县| 曲靖市| 玉屏|