當(dāng)我們準(zhǔn)備編寫一個類的時候,發(fā)現(xiàn)某個類有我們所需要的成員變量和方法,如果我們想復(fù)用這個類中的成員變量和方法,即在所編寫的類中不用聲明成員變量和定義方法,就相當(dāng)于有了這個成員變量和方法,那么我們可以將編寫的類定義為這個類的子類。
而繼承就是一種由已有的類創(chuàng)建新類的機制,利用繼承,我們可以先定義一個共有屬性的一般類,根據(jù)該一般類再定義具有特殊屬性的子類,子類繼承一般類的屬性和行為,并根據(jù)需要增加它自己的新的屬性和行為。由繼承而得到的類稱為子類,被繼承的類稱為父類(超類)。
注意:
Java不支持多重繼承,即子類只能有一個父類,人們習(xí)慣地稱子類與父類的關(guān)系是“is-a”關(guān)系。
在類的聲明中,通過使用關(guān)鍵字extends來定義一個類的子類,一般格式為:
class 子類名 extends 父類名 { … }
例如:
class Student extends People { … }
把Student類定義為People類的子類,People類是Student類的父類(超類)。
類的樹形結(jié)構(gòu):
如果C是B的子類,B又是A的子類,習(xí)慣上稱C是A的子孫類。Java的類按繼承關(guān)系形成樹形結(jié)構(gòu)(將類看做樹上的結(jié)點),在這個樹形結(jié)構(gòu)中,根結(jié)點是Object類(Object是java.lang包中的類),即Object是所有類的祖先類。任何類都是Object類的子孫類,每個類(除了Object類)有且僅有一個父類,一個類可以有多個或零個子類。
注意:
如果一個類(除了Object類)的聲明中沒有使用extends關(guān)鍵字,這個類被系統(tǒng)默認(rèn)為是Object的子類。例如:類聲明“class A”與“class A extends Object”是等同的。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程