Java由淺入深講解繼承下
本篇緊接上一篇內容繼續(xù),還是從繼承里的細節(jié)開始
1.代碼塊初始化
關于代碼塊的定義和使用因為之前已經進行過介紹,所以這里就不再贅述,我們所關注的點是父類和子類中的代碼塊在運行時候的先后順序是怎樣的
首先還是在父類以及子類中添加代碼塊,如下:
//父類
{
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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot?實現(xiàn)動態(tài)添加定時任務功能
這篇文章主要介紹了SpringBoot?動態(tài)添加定時任務,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02
springboot項目中引入本地依賴jar包并打包到lib文件夾中
這篇文章主要介紹了springboot項目中引入本地依賴jar包,如何打包到lib文件夾中,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
Spring boot調用Oracle存儲過程的兩種方式及完整代碼
這篇文章主要給大家介紹了關于Spring boot調用Oracle存儲過程的兩種方式及完整代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2020-08-08

