設(shè)計原則——里氏替換原則

前沿
繼承:將保持已有類的特性而構(gòu)造新類的過程稱
派生:在已有類的基礎(chǔ)上新增自己的特性而產(chǎn)生新類的過程稱為派生
里氏替換原則:所有引用基類的地方必須能透明地使用其子類的對象抡笼。規(guī)范繼承與派生的規(guī)則苏揣。

  • 1.子類可以實現(xiàn)父類的抽象方法,但不能覆蓋父類的非抽象方法推姻。
  • 2.子類中可以增加自己特有的方法平匈。
  • 3.當子類的方法重寫父類的方法時,方法的前置條件(即方法的形參)要比父類方法的輸入?yún)?shù)更寬松。
  • 4.當子類的方法實現(xiàn)父類的抽象方法時增炭,方法的后置條件(即方法的返回值)要比父類更嚴格忍燥。
// 我們需要完成一個兩數(shù)相減的功能,由類A來負責隙姿。

class A{
    public int func1(int a, int b){
        return a-b;
    }
}
// 需要增加一個新的功能:完成兩數(shù)相加梅垄,然后再與100求和,由類B來負責

class B extends A{
    public int func1(int a, int b){
        return a+b; // 不小心重寫了父類方法
    }
    
    public int func2(int a, int b){
        return func1(a,b)+100;
    }
}

// 計算100 - 50 +100 = 150
B b = new B();
System.out.println("100-50="+b.func2(100, 50));
// 打印結(jié)果與實際不符合
100-50=250

總結(jié):不要重寫父類的非抽象方法输玷,遵循里式替換原則

如果非要重寫父類队丝,上例中通俗的做法:原來的父類和子類都繼承一個更通俗的基類,原有的繼承關(guān)系去掉欲鹏,采用依賴机久、聚合,組合等關(guān)系代替貌虾。

class Base {
    public int func1(int a, int b){
        return a-b;
    }
}
class A extends Base{
    
}
class B extends Base{
    
    public A a = new A(); // 采用組合的方式
    
    public int func2(int a, int b){
        return this.a.func1(a, b) + 100;
    }
    
}
B b = new B();
System.out.println(b.func2(100, 50));

// 打印結(jié)果與實際符合
// 150
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吞加,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子尽狠,更是在濱河造成了極大的恐慌衔憨,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袄膏,死亡現(xiàn)場離奇詭異践图,居然都是意外死亡,警方通過查閱死者的電腦和手機沉馆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門码党,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人斥黑,你說我怎么就攤上這事揖盘。” “怎么了锌奴?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵兽狭,是天一觀的道長。 經(jīng)常有香客問我鹿蜀,道長箕慧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任茴恰,我火速辦了婚禮颠焦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘往枣。我一直安慰自己伐庭,他們只是感情好粉渠,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著似忧,像睡著了一般渣叛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盯捌,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天淳衙,我揣著相機與錄音,去河邊找鬼饺著。 笑死箫攀,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的幼衰。 我是一名探鬼主播靴跛,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼渡嚣!你這毒婦竟也來了梢睛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤识椰,失蹤者是張志新(化名)和其女友劉穎绝葡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腹鹉,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡藏畅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了功咒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愉阎。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖力奋,靈堂內(nèi)的尸體忽然破棺而出榜旦,到底是詐尸還是另有隱情,我是刑警寧澤景殷,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布章办,位于F島的核電站,受9級特大地震影響滨彻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挪蹭,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一亭饵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梁厉,春花似錦辜羊、人聲如沸踏兜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碱妆。三九已至,卻和暖如春昔驱,著一層夾襖步出監(jiān)牢的瞬間疹尾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工骤肛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纳本,地道東北人。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓腋颠,卻偏偏與公主長得像繁成,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子淑玫,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容