理解--->三大特性之繼承

內(nèi)容來之 極客學(xué)院 和 毛毛蟲的小哈

將子類轉(zhuǎn)換成父類琳彩,在繼承關(guān)系上面是向上移動(dòng)的誊酌,所以一般稱之為向上轉(zhuǎn)型。由于向上轉(zhuǎn)型是從一個(gè)叫專用類型向較通用類型轉(zhuǎn)換露乏,所以它總是安全的碧浊,唯一發(fā)生變化的可能就是屬性和方法的丟失。這就是為什么編譯器在“未曾明確表示轉(zhuǎn)型”活“未曾指定特殊標(biāo)記”的情況下瘟仿,仍然允許向上轉(zhuǎn)型的原因箱锐。

謹(jǐn)慎繼承
上面講了繼承所帶來的諸多好處,那我們是不是就可以大肆地使用繼承呢劳较?送你一句話:慎用繼承驹止。

首先我們需要明確浩聋,繼承存在如下缺陷:

1、父類變臊恋,子類就必須變衣洁。

2、繼承破壞了封裝抖仅,對(duì)于父類而言坊夫,它的實(shí)現(xiàn)細(xì)節(jié)對(duì)與子類來說都是透明的。

3撤卢、繼承是一種強(qiáng)耦合關(guān)系环凿。

所以說當(dāng)我們使用繼承的時(shí)候,我們需要確信使用繼承確實(shí)是有效可行的辦法放吩。那么到底要不要使用繼承呢智听?《Think in Java》中提供了解決辦法:問一問自己是否需要從子類向父類進(jìn)行向上轉(zhuǎn)型。如果必須向上轉(zhuǎn)型渡紫,則繼承是必要的到推,但是如果不需要,則應(yīng)當(dāng)好好考慮自己是否需要繼承腻惠。

例子 :

package com.sheepmu;
class Animal
{
public void eat()
{
System.out.println("父類的 eating...");
}
}
class Bird extends Animal
{
@Override
public void eat()
{
System.out.println("子類重寫的父類的 eatting...");
}
public void fly()
{
System.out.println("子類新方法 flying...");
}
}
public class Sys
{
public static void main(String[] args)
{
Animal b=new Bird(); //向上轉(zhuǎn)型
b.eat();
// b.fly(); b雖指向子類對(duì)象环肘,但此時(shí)子類作為向上的代價(jià)丟失和父類不同的fly()方法
sleep(new Male());
sleep(new Female());//傳入的參數(shù)是子類-----!集灌!
}

public static void sleep(Human h) //方法的參數(shù)是父類------;诒ⅰ!欣喧!  
    {  
     h.sleep();  
    }  

}

[java] view plain copy

package com.sheepmu;

public class Human
{
public void sleep()
{
System.out.println("父類人類 sleep..");
}
}
class Male extends Human
{
@Override
public void sleep()
{
System.out.println("男人 sleep..");
}
}
class Female extends Human
{
@Override
public void sleep()
{
System.out.println("女人 sleep..");
}
}

輸出:
子類重寫的父類的 eatting...男人 sleep..女人 sleep..
詳解:

  1. 向上轉(zhuǎn)型的實(shí)現(xiàn) ** **
    Animal b=new Bird(); //向上轉(zhuǎn)型 b.eat(); // 調(diào)用的是子類的eat()方法 b.fly(); // 報(bào)錯(cuò)!!!!!-------b雖指向子類對(duì)象腌零,但此時(shí)子類作為向上轉(zhuǎn)型的代價(jià)丟失和父類不同的fly()方法------2.為何不直接Bird b=new Bird();b.eat() 呢?
    這樣就沒有體現(xiàn)出面向?qū)ο蟮某橄蟮木幊趟枷胙剿舭ⅲ档土舜a的可擴(kuò)展性.
    3.向上轉(zhuǎn)型的好處益涧?
sleep(new Male());//調(diào)用方法時(shí)傳入的參數(shù)是子類           sleep(new Female());

** public static void sleep(Human h) //方法的參數(shù)是父類**
{
h.sleep();
}
如上代碼就是用的向上轉(zhuǎn)型,若是不用向上轉(zhuǎn)型驯鳖,那么有多少個(gè)子類就得在這兒寫多少種不同的睡覺方法~~~~~~

如果 你的所有的子類要 轉(zhuǎn)換成父類 , 并都調(diào)用重寫的方法 ,那么就可以繼承.
(可以嘗試細(xì)分繼承,類似接口隔離原則 自己理解)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末闲询,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子浅辙,更是在濱河造成了極大的恐慌扭弧,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件记舆,死亡現(xiàn)場離奇詭異鸽捻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門御蒲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衣赶,“玉大人,你說我怎么就攤上這事厚满「椋” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵痰滋,是天一觀的道長摘能。 經(jīng)常有香客問我,道長敲街,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任严望,我火速辦了婚禮棚点,結(jié)果婚禮上滔韵,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好械巡,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著库菲,像睡著了一般琐鲁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惭每,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天骨饿,我揣著相機(jī)與錄音,去河邊找鬼台腥。 笑死宏赘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的黎侈。 我是一名探鬼主播察署,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼峻汉!你這毒婦竟也來了贴汪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤休吠,失蹤者是張志新(化名)和其女友劉穎扳埂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛛碌,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡聂喇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片希太。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡克饶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出誊辉,到底是詐尸還是另有隱情矾湃,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布堕澄,位于F島的核電站邀跃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛙紫。R本人自食惡果不足惜拍屑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坑傅。 院中可真熱鬧僵驰,春花似錦、人聲如沸唁毒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浆西。三九已至粉私,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間近零,已是汗流浹背诺核。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秒赤,地道東北人猪瞬。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像入篮,于是被迫代替她去往敵國和親陈瘦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法潮售,類相關(guān)的語法痊项,內(nèi)部類的語法,繼承相關(guān)的語法酥诽,異常的語法鞍泉,線程的語...
    子非魚_t_閱讀 31,664評(píng)論 18 399
  • 今天的主要內(nèi)容是構(gòu)造方法,static用法肮帐,繼承咖驮,多態(tài)边器,抽象類,接口托修。由于從今天開始JAVA的學(xué)習(xí)基本上都是面向?qū)?..
    沒說再見閱讀 452評(píng)論 0 0
  • 第03天java面向?qū)ο?今日內(nèi)容介紹 ·接口 ·匿名對(duì)象&final ·多態(tài) ·接口 1.接口的概述 接口是功能...
    chcvn閱讀 458評(píng)論 0 0
  • 披星戴月過大川忘巧,辛辛苦苦為掙錢;只因有個(gè)好心情睦刃,兒女長大勝過俺砚嘴。
    云先閱讀 226評(píng)論 3 6
  • 身在都市的你是否已經(jīng)忘記了閱讀?美國攝影師Steve McCurry曾探訪過30個(gè)國家涩拙,跨時(shí)50年記錄下了在旅途中...
    Kaichidren閱讀 272評(píng)論 4 10