詳解 Java繼承關系下的構造方法調用
詳解 Java繼承關系下的構造方法調用
在Java中創(chuàng)建一個類的對象時,如果該類存在父類,則先調用父類的構造方法,然后再調用子類的構造方法。如果父類沒有定義構造方法,則調用編譯器自動創(chuàng)建的不帶參數的默認構造方法。如果父類定義了public的無參的構造方法,則在調用子類的構造方法前會自動先調用該無參的構造方法。如果父類只有有參的構造方法,沒有無參的構造方法,則子類必須在構造方法中必須顯式調用super(參數列表)來指定某個有參的構造方法。如果父類定義有無參的構造方法,但無參的構造方法聲明為private,則子類同樣必須在構造方法中必須顯式調用super(參數列表)來指定某個有參的構造方法。如果父類沒有其他的有參構造方法,則子類無法創(chuàng)建。
| 有父類 | 子類 | ||
|---|---|---|---|
| Public無參構造方法 | Private無參構造方法 | 有參構造方法 | |
| 無 | 無 | 無 | 所有構造方法都會調用父類的默認構造方法 |
| 有 | 無 | 無 | 所有構造方法都會調用定義的無參構造方法 |
| 無 | 無 | 有 | 所有構造方法都必須指定調用某個有參的構造方法,或通過this調用某個其他的構造方法。 |
| 有 | 無 | 有 | 可以指定調用某個構造方法,如果沒有指定,則調用無參構造方法。 |
| 無 | 有 | 無 | 子類無法構造(父類無法派生子類) |
| 無 | 有 | 有 | 所有構造方法都必須指定調用某個有參的構造方法,或通過this調用某個其他的構造方法。 |
例如:
class Parent {
private String pString;
Parent(){
pString = "p1";
}
}
class Child extends Parent {
private String cString;
Child() {
cString = "c1";
}
}
當Child對象創(chuàng)建時,會先調用父類Parent的構造方法將pString初始化為”p1”,然后再調用Child的構造方法,將cString初始化為”c1”。
class Parent {
private String pString;
private Parent(){
pString = "p1";
}
Parent(String s){
pString = "p2";
}
}
class Child extends Parent {
private String cString;
Child() {
super("");
cString = "c1";
}
}
由于父類定義了private的無參構造方法,因此,在子類中必須顯式指定調用某個有參的構造方法。
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
SpringMVC框架和SpringBoot項目中控制器的響應結果深入分析
這篇文章主要介紹了SpringMVC框架和SpringBoot項目中控制器的響應結果,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-12-12
Java Web開發(fā)防止多用戶重復登錄的完美解決方案
在web項目開發(fā)中,很多情況下都可以讓同一個賬號信息在不同的登錄入口登錄很多次,這樣子做的不是很完善。一般解決這種情況有兩種解決方案,小編呢主要以第二種方式給大家介紹具體的實現方法,對java web 防止多用戶重復登錄的解決方案感興趣的朋友一起看看吧2016-11-11
Java中System.currentTimeMillis()計算方式與時間單位轉換講解
本文詳細講解了Java中System.currentTimeMillis()計算方式與時間單位轉換,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
AndroidStudio無法新建Java工程的簡單解決辦法
AS創(chuàng)建java工程是非常麻煩的,AS沒有提供直接創(chuàng)建java工程的方法且常常無法新建,這篇文章主要給大家介紹了關于AndroidStudio無法新建Java工程的簡單解決辦法,需要的朋友可以參考下2024-06-06
責任鏈模式在spring security過濾器鏈中的應用小結
責任鏈模式在SpringSecurity過濾器鏈中的應用,通過一系列的過濾器按順序處理請求,每個過濾器負責特定的安全功能,實現靈活且可擴展的請求處理機制,感興趣的朋友跟隨小編一起看看吧2024-11-11
利用hadoop查詢兩兩之間有共同好友及他倆的共同好友都是誰
一想到要實現求共同好友的功能,很多人都會想到redis來實現。但是redis存儲和數據和計算時需要耗費較多的內存資源。所以文本將介紹另一種方法,即利用Hadoop中的MapReduce來實現,感興趣的可以了解一下2022-01-01

