繼承基礎(chǔ)

書名:代碼本色:用編程模擬自然系統(tǒng)
作者:Daniel Shiffman
譯者:周晗彬
ISBN:978-7-115-36947-5
目錄

4.7 繼承基礎(chǔ)

1批什、泛型的動物類

??我們來看看另一個例子,這是一個由各種動物組成的世界社搅,包括:狗(dog)驻债、貓(cat)、猴子(monkey)形葬、熊貓(panda)合呐、袋熊(wombat)和水母(sea nettle)。

1)Dog類

從實現(xiàn)Dog類開始笙以,一個Dog對象有年齡變量age(整數(shù))淌实,還有eat()、sleep()和bark()函數(shù)(分別對應吃飯、睡覺和吠叫)拆祈。

class Dog{
    int age;
    Dog(){ 狗和貓都有相同的變量(age)和函數(shù)(eat()恨闪、sleep()
        age = 0;
    }
    void eat() {
        println("Yum!");
    }
    void sleep() {
        println("Zzzzzz");
    }
    void bark() { 狗會吠叫,所以還有個特殊的bark()函數(shù)
        println("WOOF!");
    }
}

2)Cat類

class Cat {
    int age;
    Cat() {
        age = 0;
    }
    void eat() {
        println("Yum!");
    }
    void sleep() {
        println("Zzzzzz");
    }
    void meow() {
      println("MEOW!");
    }
}

2放坏、繼承

??我們還要為魚凛剥、馬、考拉和狐猴分別寫類重寫同樣的代碼轻姿,這樣的實現(xiàn)過程難免重復而單調(diào)犁珠。
??我們應該實現(xiàn)一個泛型的動物類(Animal)用于描述各種類型的動物。所有動物都會吃和睡互亮,因此我們可以說:

  • 狗是動物的一種犁享,它擁有動物的所有屬性,動物能做什么豹休,它就能做什么炊昆,除此之外,它還會吠叫威根;
  • 貓是動物的一種凤巨,它擁有動物的所有屬性,動物能做什么洛搀,它就能做什么敢茁,除此之外,它還會喵喵叫留美。

??繼承讓上述需求的實現(xiàn)成為可能彰檬。
??通過繼承,類可以從其他類中繼承屬性(變量)和功能(方法)谎砾。

  • Dog類是Animal類的子類逢倍,子類自動從父類中繼承所有變量和函數(shù),
    除此之外景图,子類還可以有父類沒有的函數(shù)和變量较雕。
  • 繼承關(guān)系符合樹形結(jié)構(gòu),就像是一棵不斷演化的“生命之樹”挚币。
    比如亮蒋,狗繼承自犬類,犬類繼承自哺乳動物忘晤,而哺乳動物則繼承自動物宛蚓。

3激捏、繼承的語法

class Animal { Animal類是父類(即超類)
    int age; Dog類和Cat類會繼承age變量
    Animal() {
        age = 0;
    }
    void eat() { Dog類和Cat類會繼承eat()和sleep()函數(shù)
        println("Yum!");
    }
    void sleep() {
        println("Zzzzzz");
    }
 }

class Dog extends Animal { "extends Animal"指Dog類是Animal類的子類
    Dog() {
        super(); super()函數(shù)執(zhí)行父類中的代碼
    }
    void bark() {
        println("WOOF!"); 我們在子類中定義bark()函數(shù)设塔,因為它不是父類的一部分
    }
}

class Cat extends Animal {
    Cat() {
        super();
    }
    void meow() {
        println("MEOW!");
    }
}

這里有兩個新關(guān)鍵字,如下。

  • extends 該關(guān)鍵詞指出當前類的父類闰蛔。注意痕钢,類只能直接繼承一個父類,盡管如此序六,類的父類可以繼承其他類任连。舉個例子,狗繼承自動物例诀,梗犬則繼承自狗随抠。
    繼承關(guān)系會自下而上一直延續(xù)下去。
  • super() 它會調(diào)用父類的構(gòu)造函數(shù)繁涂。換句話說拱她,你在父類的構(gòu)造函數(shù)中做了什么,子類的構(gòu)造函數(shù)也會做同樣的事情扔罪。除了調(diào)用super()函數(shù)秉沼,你還可以在子類的構(gòu)造函數(shù)中進行子類專有的初始化操作。
    如果父類的構(gòu)造函數(shù)帶有參數(shù)矿酵,super()函數(shù)也帶有相同的參數(shù)唬复。

4、定制

  • 子類可以擁有父類沒有的功能和屬性全肮。
  • 如果狗對象的進食行為和一般動物不同敞咧,
    只需要在子類中重新定義eat()函數(shù),把父類中的同名函數(shù)覆蓋即可辜腺。
  • 但如果狗的進食行為和普通動物一樣妄均,僅僅是多了部分功能,這時候又該怎么實現(xiàn)哪自?
    子類可以調(diào)用父類的函數(shù)丰包,再加入屬于自身的定制代碼。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末壤巷,一起剝皮案震驚了整個濱河市邑彪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胧华,老刑警劉巖寄症,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異矩动,居然都是意外死亡有巧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門悲没,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篮迎,“玉大人,你說我怎么就攤上這事√鸪鳎” “怎么了逊笆?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長岂傲。 經(jīng)常有香客問我难裆,道長,這世上最難降的妖魔是什么镊掖? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任乃戈,我火速辦了婚禮,結(jié)果婚禮上亩进,老公的妹妹穿的比我還像新娘偏化。我一直安慰自己,他們只是感情好镐侯,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布侦讨。 她就那樣靜靜地躺著,像睡著了一般苟翻。 火紅的嫁衣襯著肌膚如雪韵卤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天崇猫,我揣著相機與錄音沈条,去河邊找鬼。 笑死诅炉,一個胖子當著我的面吹牛蜡歹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涕烧,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼月而,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了议纯?” 一聲冷哼從身側(cè)響起父款,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞻凤,沒想到半個月后憨攒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡阀参,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年肝集,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛛壳。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡杏瞻,死狀恐怖所刀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伐憾,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布赫模,位于F島的核電站树肃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瀑罗。R本人自食惡果不足惜胸嘴,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望斩祭。 院中可真熱鬧劣像,春花似錦、人聲如沸摧玫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诬像。三九已至屋群,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坏挠,已是汗流浹背芍躏。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留降狠,地道東北人对竣。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像榜配,于是被迫代替她去往敵國和親否纬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

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