Java由淺入深講解繼承下
本篇緊接上一篇內容繼續(xù),還是從繼承里的細節(jié)開始
1.代碼塊初始化
關于代碼塊的定義和使用因為之前已經(jīng)進行過介紹,所以這里就不再贅述,我們所關注的點是父類和子類中的代碼塊在運行時候的先后順序是怎樣的
首先還是在父類以及子類中添加代碼塊,如下:
//父類
{
System.out.println("父類實例代碼塊");
}
static {
System.out.println("父類靜態(tài)代碼塊");
}
public Plant() {
System.out.println("父類構造方法");
}
//子類
{
System.out.println("子類實例代碼塊");
}
static {
System.out.println("子類靜態(tài)代碼塊");
}
public Tree() {
System.out.println("子類構造方法");
}我們在main方法中實例化子類對象后來看一下結果:

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

