更新時(shí)間:2022-11-02 來(lái)源:黑馬程序員 瀏覽量:
在Java中,類(lèi)的繼承是指在一個(gè)現(xiàn)有類(lèi)的基礎(chǔ)上去構(gòu)建一個(gè)新的類(lèi),構(gòu)建出來(lái)的新類(lèi)稱(chēng)為子類(lèi),現(xiàn)有類(lèi)稱(chēng)為父類(lèi)。子類(lèi)繼承父類(lèi)的屬性和方法,使得子類(lèi)對(duì)象(實(shí)例)具有父類(lèi)的特征和行為。
在類(lèi)的繼承中,需要注意一些問(wèn)題,具體如下。
(1)在Java中,類(lèi)只支持單繼承,不允許多重繼承。也就是說(shuō),一個(gè)類(lèi)只能有一個(gè)直接父類(lèi),例如下面這種情況是不合法的。
class A{} class B{} class C extends A,B{} // C類(lèi)不可以同時(shí)繼承A類(lèi)和B類(lèi)
(2)多個(gè)類(lèi)可以繼承一個(gè)父類(lèi),例如下面這種情況是允許的。
class A{} class B extends A{} class C extends A{} // B類(lèi)和C類(lèi)都可以繼承A類(lèi)
(3)在Java中,多層繼承也是可以的,即一個(gè)類(lèi)的父類(lèi)可以再繼承另外的父類(lèi)。例如,C類(lèi)繼承自B類(lèi),而B(niǎo)類(lèi)又可以繼承自A類(lèi),這時(shí),C類(lèi)也可稱(chēng)為A類(lèi)的子類(lèi)。例如,下面這種情況是允許的。
class A{} class B extends A{} // B類(lèi)繼承A類(lèi),B類(lèi)是A類(lèi)的子類(lèi) class C extends B{} // C類(lèi)繼承B類(lèi),C類(lèi)是B類(lèi)的子類(lèi),同時(shí)也是A類(lèi)的子類(lèi)
(4)在Java中,子類(lèi)和父類(lèi)是一種相對(duì)概念,一個(gè)類(lèi)可以是某個(gè)類(lèi)的父類(lèi),也可以是另一個(gè)類(lèi)的子類(lèi)。例如,在第(3)種情況中,B類(lèi)是A類(lèi)的子類(lèi),同時(shí)又是C類(lèi)的父類(lèi)。
在繼承中,子類(lèi)不能直接訪問(wèn)父類(lèi)中的私有成員,子類(lèi)可以調(diào)用父類(lèi)的非私有方法,但是不能調(diào)用父類(lèi)的私有成員。
Java培訓(xùn)話題:java是什么專(zhuān)業(yè)?學(xué)java要掌握哪些基礎(chǔ)?
2022-11-02Java培訓(xùn):foreach循環(huán)的用法
2022-11-01Java培訓(xùn):HashSet集合
2022-11-01Java培訓(xùn):變量的類(lèi)型轉(zhuǎn)換之自動(dòng)類(lèi)型轉(zhuǎn)換
2022-10-31Java編程基礎(chǔ):運(yùn)算符的優(yōu)先級(jí)
2022-10-31怎樣使單個(gè)靜態(tài)變量被所有實(shí)例共享?
2022-10-27