国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

里氏替換原則

這篇具有很好參考價(jià)值的文章主要介紹了里氏替換原則。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

里氏替換原則

OOP(Object Oriented Programming) 面向?qū)ο缶幊?/strong>

OO中的繼承性的思考
  • 1.繼承包含這樣一層含義,父類(lèi)中凡是已經(jīng)寫(xiě)好的方法,實(shí)際上就是設(shè)定規(guī)范。雖然不強(qiáng)制要求所有子類(lèi)必須遵守規(guī)范(不重寫(xiě)方法),但是如果子類(lèi)對(duì)這些方法,任意修改就會(huì)對(duì)繼承體系造成破壞。
  • 2.繼承在程序設(shè)計(jì)帶來(lái)便利同時(shí),也帶來(lái)弊端。使用繼承會(huì)給程序帶來(lái)侵入性,程序的可移植性降低,增加了對(duì)象間的耦合,如果一個(gè)類(lèi)被其他類(lèi)繼承,則當(dāng)這個(gè)類(lèi)需要修改時(shí),必須考慮所有的子類(lèi),并且父類(lèi)修改后,所有涉及到的子類(lèi)的功能可能會(huì)受到影響。
  • 3.問(wèn)題提出,編碼中如何正確的使用繼承? => 里氏替換原則
基本介紹
  • 1.里氏替換原則(Liskov Substitution Principle)在1988年,由麻省理工學(xué)院的里姓女士提出的。
  • 2.如果對(duì)每個(gè)類(lèi)T1對(duì)象t1,都有類(lèi)型T2的對(duì)象t2,使得以T1定義的所有對(duì)象t1替換為t2時(shí),程序的行為不會(huì)方式改變,那么T2類(lèi)是T1的子類(lèi)。換句話說(shuō),所有引用基類(lèi)的地方,必須能透明的使用其子類(lèi)的對(duì)象。
  • 3.在使用繼承時(shí),遵循里氏替換原則,在子類(lèi)中盡量不要重寫(xiě)父類(lèi)中寫(xiě)好的方法。
  • 4.里氏替換原則,說(shuō)明繼承讓兩個(gè)類(lèi)的耦合性增強(qiáng)了,在合適的情況下,可以使用組合,聚合,依賴(lài)傳遞解決問(wèn)題。
案例1

案例只是為了體現(xiàn)原則的設(shè)計(jì),并無(wú)實(shí)際意義

/**
 * @author 長(zhǎng)名06
 * @version 1.0
 * 里氏替換原則 案例1
 * 分析
 *  因?yàn)锽類(lèi)繼承了A類(lèi),且不小心,重寫(xiě)了A類(lèi)的fun1方法,導(dǎo)致
 *  原有的父類(lèi)的方法的功能,被破壞,違反了里氏替換原則
 *  所以,在需要重寫(xiě)父類(lèi)的方法的類(lèi)關(guān)系中,可以將繼承關(guān)系替換成依賴(lài)(組合,聚合)關(guān)系
 */
public class Liskov1 {
    public static void main(String[] args) {
        A a = new A();
        System.out.println("2-4=" + a.fun1(2, 4));
        System.out.println("5-4=" + a.fun1(5, 4));

        B b = new B();
        System.out.println("2-4=" + b.fun1(2,4));//要求出2-4
        System.out.println("4-5=" + b.fun1(4,5));//要求出4-5
        System.out.println("4-5 + 9=" + b.fun2(4,5));//要求出4-5 + 9
    }
}

class A {
    public int fun1(int a, int b) {
        return a - b;
    }
}

class B extends A {
    @Override
    public int fun1(int a, int b) {
        return a + b;
    }

    public int fun2(int a, int b) {
        return fun1(a, b) + 9;
    }
}
案例2
/**
 * @author 長(zhǎng)名06
 * @version 1.0
 * 使用組合方式 替代繼承方式
 */
public class Liskov2 {
    public static void main(String[] args) {
        A a = new A();
        System.out.println("2-4=" + a.fun1(2, 4));
        System.out.println("5-4=" + a.fun1(5, 4));

        B b = new B();
        System.out.println("2-4=" + b.fun3(2,4));
        System.out.println("4-5=" + b.fun3(4,5));
        System.out.println("4+ 5 + 9=" + b.fun2(4,5));
    }
}

class Base{

}

class A extends Base {
    public int fun1(int a, int b) {
        return a - b;
    }
}

class B extends Base {

    private A base = new A();

    public int fun1(int a, int b) {
        return a + b;
    }

    public int fun2(int a, int b) {
        return fun1(a, b) + 9;
    }

    public int fun3(int a,int b){
        return base.fun1(a,b);
    }
}

只是為了記錄自己的學(xué)習(xí)歷程,且本人水平有限,不對(duì)之處,請(qǐng)指正。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-678121.html

到了這里,關(guān)于里氏替換原則的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式:里氏替換原則(詳解)

    本博主將用CSDN記錄軟件開(kāi)發(fā)求學(xué)之路上親身所得與所學(xué)的心得與知識(shí),有興趣的小伙伴可以關(guān)注博主!也許一個(gè)人獨(dú)行,可以走的很快,但是一群人結(jié)伴而行,才能走的更遠(yuǎn)! (1)引入 繼承包含這樣一層含義:父類(lèi)中凡是已經(jīng)實(shí)現(xiàn)好的方法, 實(shí)際上是在設(shè)定規(guī)范和契約 ,

    2024年02月06日
    瀏覽(16)
  • 【Java 設(shè)計(jì)模式】設(shè)計(jì)原則之里氏替換原則

    在軟件開(kāi)發(fā)中,設(shè)計(jì)原則是創(chuàng)建靈活、可維護(hù)和可擴(kuò)展軟件的基礎(chǔ)。 這些原則為我們提供了指導(dǎo)方針,幫助我們構(gòu)建高質(zhì)量、易理解的代碼。 ?單一職責(zé)原則(SRP) ?開(kāi)放/封閉原則(OCP) ?里氏替換原則(LSP) ?依賴(lài)倒置原則(DIP) ?接口隔離原則(ISP) ?合成/聚合復(fù)

    2024年01月20日
    瀏覽(37)
  • 基于面向?qū)ο蠡A(chǔ)設(shè)計(jì)——里氏替換原則

    基于面向?qū)ο蠡A(chǔ)設(shè)計(jì)——里氏替換原則

    在Java中,支持抽象和多態(tài)的關(guān)鍵機(jī)制之一是繼承。正是使用了繼承,我們才可以創(chuàng)建實(shí)現(xiàn)父類(lèi)中抽象方法的子類(lèi)。那么,是什么規(guī)則在支配著這種特殊的繼承用法呢?最佳的繼承層次的特征又是什么呢?在什么情況下會(huì)使我們創(chuàng)建的類(lèi)層次結(jié)構(gòu)掉進(jìn)不符合開(kāi)閉原則的陷阱中呢

    2024年02月14日
    瀏覽(25)
  • 設(shè)計(jì)模式(四):里氏替換原則(詳解)

    本博主將用CSDN記錄軟件開(kāi)發(fā)求學(xué)之路上親身所得與所學(xué)的心得與知識(shí),有興趣的小伙伴可以關(guān)注博主!也許一個(gè)人獨(dú)行,可以走的很快,但是一群人結(jié)伴而行,才能走的更遠(yuǎn)! (1)引入 繼承包含這樣一層含義:父類(lèi)中凡是已經(jīng)實(shí)現(xiàn)好的方法, 實(shí)際上是在設(shè)定規(guī)范和契約 ,

    2024年02月05日
    瀏覽(23)
  • 深入理解設(shè)計(jì)原則之里氏替換原則(LSP)【軟件架構(gòu)設(shè)計(jì)】

    深入理解設(shè)計(jì)原則之里氏替換原則(LSP)【軟件架構(gòu)設(shè)計(jì)】

    C++高性能優(yōu)化編程系列 深入理解軟件架構(gòu)設(shè)計(jì)系列 深入理解設(shè)計(jì)模式系列 高級(jí)C++并發(fā)線程編程 里氏替換原則(Liskov Substitution Principle, LSP)于1986年有Barbara Liskov提出,他當(dāng)時(shí)是這樣描述這條原則的: 如果S是T的子類(lèi)型,那么T的對(duì)象可以被S的對(duì)象所替換,并不影響代碼的運(yùn)行

    2024年02月07日
    瀏覽(23)
  • Chapter 15: Object-Oriented Programming | Python for Everybody 講義筆記_En

    Chapter 15: Object-Oriented Programming | Python for Everybody 講義筆記_En

    Exploring Data Using Python 3 Dr. Charles R. Severance Python for Everybody 零基礎(chǔ)程序設(shè)計(jì)(Python 入門(mén)) This course aims to teach everyone the basics of programming computers using Python. 本課程旨在向所有人傳授使用 Python 進(jìn)行計(jì)算機(jī)編程的基礎(chǔ)知識(shí)。 We cover the basics of how one constructs a program from a series of si

    2024年02月07日
    瀏覽(41)
  • 設(shè)計(jì)模式:里氏代換原則(Liskov Substitution Principle,LSP)介紹

    里氏代換原則(Liskov Substitution Principle,LSP)是面向?qū)ο笤O(shè)計(jì)原則的一部分,它強(qiáng)調(diào) 子類(lèi)對(duì)象應(yīng)該能夠替換其父類(lèi)對(duì)象而不影響程序的正確性 。換句話說(shuō),子類(lèi)對(duì)象應(yīng)該可以在不改變程序正確性的前提下替換掉父類(lèi)對(duì)象。 該原則的實(shí)現(xiàn)原理可以通過(guò)以下幾點(diǎn)來(lái)說(shuō)明: 子類(lèi)必

    2024年04月29日
    瀏覽(15)
  • 里式替換原則(LSP)

    里式替換原則(LSP)

    目錄 簡(jiǎn)介: 作用: 過(guò)程: 總結(jié): 里式替換原則(Liskov Substitution Principle,簡(jiǎn)稱(chēng)LSP)的提出者是美國(guó)計(jì)算機(jī)科學(xué)家Barbara Liskov。Barbara Liskov是一位計(jì)算機(jī)科學(xué)家,麻省理工學(xué)院教授,也是美國(guó)第一個(gè)計(jì)算機(jī)科學(xué)女博士,師從圖靈獎(jiǎng)得主John McCarthy教授,人工智能概念的提出者。她在

    2024年02月11日
    瀏覽(17)
  • 面向?qū)ο笤O(shè)計(jì)的六大原則(SOLID原則)-——單一職責(zé)原則

    單一職責(zé)原則(Single Responsibility Principle, SRP)是面向?qū)ο缶幊毯驮O(shè)計(jì)的五大SOLID原則之一。它強(qiáng)調(diào)一個(gè)類(lèi)、方法或模塊應(yīng)該只有一個(gè)職責(zé),即只做一件事情。如果一個(gè)類(lèi)承擔(dān)的職責(zé)過(guò)多,那么它的可維護(hù)性、可讀性和可擴(kuò)展性都會(huì)受到影響。當(dāng)需要修改類(lèi)的某個(gè)職責(zé)時(shí),可能

    2024年03月12日
    瀏覽(44)
  • 面向?qū)ο笤O(shè)計(jì)的六大原則(SOLID原則)-——開(kāi)閉原則

    開(kāi)閉原則(Open-Closed Principle, OCP)是面向?qū)ο笤O(shè)計(jì)的五大SOLID原則之一。這個(gè)原則主張“軟件實(shí)體(類(lèi)、模塊、函數(shù)等)應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉”。也就是說(shuō),軟件的設(shè)計(jì)應(yīng)該允許在不修改原有代碼的情況下增加新的功能。這樣的設(shè)計(jì)有助于降低代碼的復(fù)雜性和維護(hù)成本

    2024年03月12日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包