老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)

里氏替換原則是什么?

里氏替換原則是面向?qū)ο笤O(shè)計(jì)的基本原則之一,主張使用“抽象(Abstraction)”和“多態(tài)(Polymorphism)”將設(shè)計(jì)中的靜態(tài)結(jié)構(gòu)改為動(dòng)態(tài)結(jié)構(gòu),維持設(shè)計(jì)的封閉性。“抽象”是語(yǔ)言提供的功能,“多態(tài)”由繼承語(yǔ)義實(shí)現(xiàn)。

南皮網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站開(kāi)發(fā)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站2013年開(kāi)創(chuàng)至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站

里氏替換原則(Liskov Substitution Principle,LSP)由麻省理工學(xué)院計(jì)算機(jī)科學(xué)實(shí)驗(yàn)室的里斯科夫(Liskov)女士在 1987 年的“面向?qū)ο蠹夹g(shù)的高峰會(huì)議”(OOPSLA)上發(fā)表的一篇文章《數(shù)據(jù)抽象和層次》(Data Abstraction and Hierarchy)里提出來(lái)的,她提出:繼承必須確保超類所擁有的性質(zhì)在子類中仍然成立(Inheritance should ensure that any property proved about supertype objects also holds for subtype objects)。

里氏替換原則主要闡述了有關(guān)繼承的一些原則,也就是什么時(shí)候應(yīng)該使用繼承,什么時(shí)候不應(yīng)該使用繼承,以及其中蘊(yùn)含的原理。里氏替換原是繼承復(fù)用的基礎(chǔ),它反映了基類與子類之間的關(guān)系,是對(duì)開(kāi)閉原則的補(bǔ)充,是對(duì)實(shí)現(xiàn)抽象化的具體步驟的規(guī)范。

里氏替換原則的作用

里氏替換原則的主要作用如下。

1、里氏替換原則是實(shí)現(xiàn)開(kāi)閉原則的重要方式之一。

2、它克服了繼承中重寫(xiě)父類造成的可復(fù)用性變差的缺點(diǎn)。

3、它是動(dòng)作正確性的保證。即類的擴(kuò)展不會(huì)給已有的系統(tǒng)引入新的錯(cuò)誤,降低了代碼出錯(cuò)的可能性。

里氏替換原則的實(shí)現(xiàn)方法

里氏替換原則通俗來(lái)講就是:子類可以擴(kuò)展父類的功能,但不能改變父類原有的功能。也就是說(shuō):子類繼承父類時(shí),除添加新的方法完成新增功能外,盡量不要重寫(xiě)父類的方法。

如果通過(guò)重寫(xiě)父類的方法來(lái)完成新的功能,這樣寫(xiě)起來(lái)雖然簡(jiǎn)單,但是整個(gè)繼承體系的可復(fù)用性會(huì)比較差,特別是運(yùn)用多態(tài)比較頻繁時(shí),程序運(yùn)行出錯(cuò)的概率會(huì)非常大。

如果程序違背了里氏替換原則,則繼承類的對(duì)象在基類出現(xiàn)的地方會(huì)出現(xiàn)運(yùn)行錯(cuò)誤。這時(shí)其修正方法是:取消原來(lái)的繼承關(guān)系,重新設(shè)計(jì)它們之間的關(guān)系。

關(guān)于里氏替換原則的例子,最有名的是“正方形不是長(zhǎng)方形”。當(dāng)然,生活中也有很多類似的例子,例如,企鵝、鴕鳥(niǎo)和幾維鳥(niǎo)從生物學(xué)的角度來(lái)劃分,它們屬于鳥(niǎo)類;但從類的繼承關(guān)系來(lái)看,由于它們不能繼承“鳥(niǎo)”會(huì)飛的功能,所以它們不能定義成“鳥(niǎo)”的子類。同樣,由于“氣球魚(yú)”不會(huì)游泳,所以不能定義成“魚(yú)”的子類;“玩具炮”炸不了敵人,所以不能定義成“炮”的子類等。

下面以“幾維鳥(niǎo)不是鳥(niǎo)”為例來(lái)說(shuō)明里氏替換原則。

【例2】里氏替換原則在“幾維鳥(niǎo)不是鳥(niǎo)”實(shí)例中的應(yīng)用。

分析:鳥(niǎo)一般都會(huì)飛行,如燕子的飛行速度大概是每小時(shí) 120 千米。但是新西蘭的幾維鳥(niǎo)由于翅膀退化無(wú)法飛行。假如要設(shè)計(jì)一個(gè)實(shí)例,計(jì)算這兩種鳥(niǎo)飛行 300 千米要花費(fèi)的時(shí)間。顯然,拿燕子來(lái)測(cè)試這段代碼,結(jié)果正確,能計(jì)算出所需要的時(shí)間;但拿幾維鳥(niǎo)來(lái)測(cè)試,結(jié)果會(huì)發(fā)生“除零異常”或是“無(wú)窮大”,明顯不符合預(yù)期,其類圖如圖 1 所示。

程序代碼如下:

package principle;
public class LSPtest
{
    public static void main(String[] args)
    {
        Bird bird1=new Swallow();
        Bird bird2=new BrownKiwi();
        bird1.setSpeed(120);
        bird2.setSpeed(120);
        System.out.println("如果飛行300公里:");
        try
        {
            System.out.println("燕子將飛行"+bird1.getFlyTime(300)+"小時(shí).");
            System.out.println("幾維鳥(niǎo)將飛行"+bird2.getFlyTime(300)+"小時(shí)。");
        }
        catch(Exception err)
        {
            System.out.println("發(fā)生錯(cuò)誤了!");
        }
    }
}
//鳥(niǎo)類
class Bird
{
    double flySpeed;
    public void setSpeed(double speed)
    {
        flySpeed=speed;
    }
    public double getFlyTime(double distance)
    {
        return(distance/flySpeed);
    }
}
//燕子類
class Swallow extends Bird{}
//幾維鳥(niǎo)類
class BrownKiwi extends Bird
{
    public void setSpeed(double speed)
    {
           flySpeed=0;
    }
}

程序的運(yùn)行結(jié)果如下:

如果飛行300公里:
燕子將飛行2.5小時(shí).
幾維鳥(niǎo)將飛行Infinity小時(shí)。

程序運(yùn)行錯(cuò)誤的原因是:幾維鳥(niǎo)類重寫(xiě)了鳥(niǎo)類的 setSpeed(double speed) 方法,這違背了里氏替換原則。正確的做法是:取消幾維鳥(niǎo)原來(lái)的繼承關(guān)系,定義鳥(niǎo)和幾維鳥(niǎo)的更一般的父類,如動(dòng)物類,它們都有奔跑的能力。幾維鳥(niǎo)的飛行速度雖然為 0,但奔跑速度不為 0,可以計(jì)算出其奔跑 300 千米所要花費(fèi)的時(shí)間。

其類圖如圖 2 所示。

更多相關(guān)知識(shí),請(qǐng)?jiān)L問(wèn):PHP中文網(wǎng)!
當(dāng)前標(biāo)題:里氏替換原則是什么?
瀏覽路徑:http://www.xueling.net.cn/article/chcppp.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 国产中文成人精品久久久 | 亚洲成人色图网 | 麻豆网页 | 中国护士一级毛片 | 久久伊人精品视频 | 国产精品亚洲二线在线播放 | 亚洲成人午夜精品 | 東热精品中字久久无码五月天 | 久久艹精品 | 狠狠躁夜夜躁av蜜臀少妇 | 国产成人久久精品二区三区牛 | 中文字幕大香视频蕉免费 | 亚洲GV网站男男可播放 | 欧美一区内射最近更新 | 蜜桃av片 | 日本三级图片 | 大又大又粗又硬又爽少妇毛片 | 在线综合亚洲欧美在线视频 | 日韩精品第1页 | 女女女女bbbb毛片免费视频 | 一个人免费观看视频WWW中文 | 性69无遮挡免费视频 | 秦岭神树动漫版免费看 | 国产精品久久精品99国产百盛 | 久久亚洲精品无码AV红樱桃 | 欧美大逼视频 | 伊人福利视频 | 小荡货腿张开让我cao爽视频 | 精品综合无码视频久久久 | 国产美女精品在线 | 免费无码又爽又刺激A片软件妖精 | 99热超碰在线 | 亚洲综合不卡 | 欧美成人性a片免费观看办公室 | 韩国18禁男男黄网站 | 亚洲国产av无码精品果冻传媒 | 影音先锋熟女少妇AV资源 | 天天人人 | 免费真人一级毛片 | 精品人妻无码视频中文字幕一区二区三区 | 亚洲精品入口a级 |