更新時間:2021-06-15 來源:黑馬程序員 瀏覽量:
IT就到黑馬程序員.gif)
在現(xiàn)實生活中,說到繼承,多會想到子女繼承父輩的財產(chǎn)、事業(yè)等。在程序中,繼承描述的是事物之間的所屬關(guān)系,通過繼承可以使多種事物之間形成一種關(guān)聯(lián)體系。例如貓和狗都屬于動物,程序中便可以描述為貓和狗繼承自動物;同理,波斯貓和巴厘貓繼承自貓,而沙皮狗和斑點狗繼承自狗。這些動物之間會形成一個繼承體系,如圖1所示。

在Java中,類的繼承是指在一個現(xiàn)有類的基礎(chǔ)上去構(gòu)建一個新的類,構(gòu)建出來的新類被稱作子類,現(xiàn)有類被稱作父類或基類,子類會自動擁有父類所有可繼承的屬性和方法。
在程序中,如果想聲明一個類繼承另一個類,需要使用extends關(guān)鍵字,其基本語法格式如下:
[修飾符] class 子類名 extends 父類名 {
// 程序核心代碼
}在上述語法格式中,類的修飾符是可選的,用來指定類的訪問權(quán)限,可以使用public或者省略不寫;子類名和父類名都是必選的,并且子類與父類之間要使用extends關(guān)鍵字實現(xiàn)繼承關(guān)系。
接下來通過一個案例來學(xué)習(xí)子類是如何繼承父類的,如文件1所示。
文件1 Example01.java
// 定義Animal類
class Animal {
String name; // 聲明name屬性
// 定義動物叫的方法
void shout() {
System.out.println("動物發(fā)出叫聲");
}
}
// 定義Dog類繼承Animal類
class Dog extends Animal {
// 定義一個打印name的方法
public void printName() {
System.out.println("name=" + name);
}
}
// 定義測試類
public class Example01 {
public static void main(String[] args) {
Dog dog = new Dog(); // 創(chuàng)建一個Dog類的實例對象
dog.name = "沙皮狗"; // 為dog對象的name屬性進(jìn)行賦值
dog.printName(); // 調(diào)用dog對象的printName()方法
dog.shout(); // 調(diào)用Dog類繼承來的shout()方法
}
}運行結(jié)果如圖2所示。

圖2 運行結(jié)果
在文件1中,Dog類通過extends關(guān)鍵字繼承了Animal類,這樣Dog類便是Animal類的子類。從圖2可以看出,子類雖然沒有聲明name屬性和shout()方法,但是卻能訪問這兩個成員。這就說明,子類在繼承父類的時候,會自動擁有父類所有公共的成員。
在實現(xiàn)類的繼承中,需要注意一些問題,具體如下:
(1)在Java中,類只支持單繼承,不允許多重繼承,也就是說一個類只能有一個直接父類,例如下面這種情況是不合法的。
class A{}
class B{}
class C extends A,B{} // C類不可以同時繼承A類和B類(2)多個類可以繼承同一個父類,例如下面這種情況是允許的。
class A{}
class B extends A{}
class C extends A{} // 類B和類C都可以繼承類A(3)在Java中,多層繼承是可以的,即一個類的父類可以再去繼承另外的父類,例如下面這種情況是允許的。
class A{}
class B extends A{} // 類B繼承類A,類B是類A的子類
class C extends B{} // 類C繼承類B,類C是類B的子類,同時也是類A的子類(4)在Java中,子類和父類是一種相對概念,也就是說,一個類是某個類父類的同時,也可以是另一個類的子類。例如上面的第3個示例中,B類是A類的子類,同時又是C類的父類。
java基礎(chǔ)之面向?qū)ο?繼承、接口、多態(tài)
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運營】深圳跨境電商運營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運維】鄭州運維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19