Java由淺入深講解繼承下
本篇緊接上一篇內(nèi)容繼續(xù),還是從繼承里的細(xì)節(jié)開(kāi)始
1.代碼塊初始化
關(guān)于代碼塊的定義和使用因?yàn)橹耙呀?jīng)進(jìn)行過(guò)介紹,所以這里就不再贅述,我們所關(guān)注的點(diǎn)是父類和子類中的代碼塊在運(yùn)行時(shí)候的先后順序是怎樣的
首先還是在父類以及子類中添加代碼塊,如下:
//父類
{
System.out.println("父類實(shí)例代碼塊");
}
static {
System.out.println("父類靜態(tài)代碼塊");
}
public Plant() {
System.out.println("父類構(gòu)造方法");
}
//子類
{
System.out.println("子類實(shí)例代碼塊");
}
static {
System.out.println("子類靜態(tài)代碼塊");
}
public Tree() {
System.out.println("子類構(gòu)造方法");
}我們?cè)趍ain方法中實(shí)例化子類對(duì)象后來(lái)看一下結(jié)果:

靜態(tài)代碼塊依舊是最先被執(zhí)行的,然后是父類的實(shí)例代碼塊和構(gòu)造方法,最后是子類的實(shí)例代碼塊和構(gòu)造方法
靜態(tài)代碼塊由于只執(zhí)行一次,所以如果再實(shí)例化一次子類對(duì)象的話父類和子類的靜態(tài)代碼塊都不會(huì)再執(zhí)行
2.protected關(guān)鍵字
之前的訪問(wèn)修飾限定符中還遺留了一個(gè)protected,這里把這個(gè)坑填上,procted在包訪問(wèn)權(quán)限的基礎(chǔ)上多了一個(gè)權(quán)限:不同包中的子類可以訪問(wèn)父類的成員
假設(shè)Plant和Tree分別在兩個(gè)包中,那么Plant中protected修飾的成員依舊可以在Tree中使用super來(lái)進(jìn)行訪問(wèn)
需要注意的一點(diǎn):父類必須是用public修飾,否則訪問(wèn)權(quán)限不夠,不同包的兩個(gè)類根本無(wú)法構(gòu)成繼承關(guān)系
4個(gè)訪問(wèn)修飾限定符都講完了,這里作一個(gè)總結(jié):
| 訪問(wèn)范圍 | private | default | protected | public |
| 同一包中的同一類 | √ | √ | √ | √ |
| 同一包中的不同類 | × | √ | √ | √ |
| 不同包中的子類 | × | × | √ | √ |
| 不同包中的非子類 | × | × | × | √ |
3.final關(guān)鍵字
final關(guān)鍵字同樣是用來(lái)修飾類、方法以及變量的,作用如下:
修飾變量:成為常量,無(wú)法被修改
修飾方法:不能被重寫
修飾類:不能作為父類被其它類繼承
4.Java中允許的繼承方式
單繼承:A繼承B
多層繼承:A繼承B,B繼承C、C繼承D......
不同類繼承同一個(gè)父類:A繼承B,C也繼承B
但是Java中不允許一個(gè)類繼承多個(gè)父類(即C++中的多繼承)
Java繼承的內(nèi)容結(jié)束,后面就是多態(tài)的內(nèi)容,完
到此這篇關(guān)于Java由淺入深講解繼承下的文章就介紹到這了,更多相關(guān)Java繼承內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java中獲取xml文件的某個(gè)配置節(jié)點(diǎn)內(nèi)容方式
這篇文章主要介紹了java中獲取xml文件的某個(gè)配置節(jié)點(diǎn)內(nèi)容方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
基于SpringBoot啟動(dòng)類靜態(tài)資源路徑問(wèn)題
這篇文章主要介紹了SpringBoot啟動(dòng)類靜態(tài)資源路徑問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
關(guān)于Spring Bean實(shí)例過(guò)程中使用反射和遞歸處理的Bean屬性填充問(wèn)題
本文帶領(lǐng)大家一起學(xué)習(xí)下在Spring Bean實(shí)例過(guò)程中如何使用反射和遞歸處理的Bean屬性填充,需要在類 AbstractAutowireCapableBeanFactory 的 createBean 方法中添加補(bǔ)全屬性方法,具體操作方法跟隨小編一起學(xué)習(xí)下吧2021-06-06
Java concurrency集合之LinkedBlockingDeque_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
LinkedBlockingDeque是雙向鏈表實(shí)現(xiàn)的雙向并發(fā)阻塞隊(duì)列。該阻塞隊(duì)列同時(shí)支持FIFO和FILO兩種操作方式,即可以從隊(duì)列的頭和尾同時(shí)操作(插入/刪除);并且,該阻塞隊(duì)列是支持線程安全。2017-06-06
如何在SpringBoot中添加攔截器忽略請(qǐng)求URL當(dāng)中的指定字符串
這篇文章主要介紹了在SpringBoot中添加攔截器忽略請(qǐng)求URL當(dāng)中的指定字符串,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
Java使用JSONObject需要的6個(gè)jar包下載地址
這篇文章主要介紹了Java使用JSONObject需要的6個(gè)jar包下載地址,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

