摘要:先看以下代碼執(zhí)行代碼后輸出該問(wèn)題涉及靜態(tài)初始化代碼塊構(gòu)造代碼塊構(gòu)造方法當(dāng)涉及到繼承時(shí),按照如下順序執(zhí)行執(zhí)行父類的靜態(tài)代碼塊輸出執(zhí)行子類的靜態(tài)代碼塊輸出執(zhí)行父類的構(gòu)造代碼塊輸出執(zhí)行父類的構(gòu)造函數(shù)輸出無(wú)執(zhí)行子類的構(gòu)造代碼塊輸出執(zhí)行子類的構(gòu)造函數(shù)
先看以下代碼
public class HelloB extends HelloA { public HelloB() { } { System.out.println("I’m B class"); } static { System.out.println("static B"); } public static void main(String[] args) { new HelloB(); } } class HelloA { public HelloA() { } { System.out.println("I’m A class"); } static { System.out.println("static A"); } }
執(zhí)行代碼后輸出
static A
static B
I’m A class
I’m B class
該問(wèn)題涉及:靜態(tài)初始化代碼塊、構(gòu)造代碼塊、構(gòu)造方法
當(dāng)涉及到繼承時(shí),按照如下順序執(zhí)行:
1、執(zhí)行父類的靜態(tài)代碼塊
static { System.out.println("static A"); }
輸出:static A
2、執(zhí)行子類的靜態(tài)代碼塊
static { System.out.println("static B"); }
輸出:static B
3、執(zhí)行父類的構(gòu)造代碼塊
{ System.out.println("I’m A class"); }
輸出:I"m A class
4、執(zhí)行父類的構(gòu)造函數(shù)
public HelloA() { }
輸出:無(wú)
5、執(zhí)行子類的構(gòu)造代碼塊
{ System.out.println("I’m B class"); }
輸出:I"m B class
6、執(zhí)行子類的構(gòu)造函數(shù)
public HelloB() { }
輸出:無(wú)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72344.html
摘要:也就是說(shuō),一個(gè)實(shí)例變量,在的對(duì)象初始化過(guò)程中,最多可以被初始化次。當(dāng)所有必要的類都已經(jīng)裝載結(jié)束,開(kāi)始執(zhí)行方法體,并用創(chuàng)建對(duì)象。對(duì)子類成員數(shù)據(jù)按照它們聲明的順序初始化,執(zhí)行子類構(gòu)造函數(shù)的其余部分。 類的拷貝和構(gòu)造 C++是默認(rèn)具有拷貝語(yǔ)義的,對(duì)于沒(méi)有拷貝運(yùn)算符和拷貝構(gòu)造函數(shù)的類,可以直接進(jìn)行二進(jìn)制拷貝,但是Java并不天生支持深拷貝,它的拷貝只是拷貝在堆上的地址,不同的變量引用的是堆上的...
摘要:拆箱將包裝類型轉(zhuǎn)換為基本類型的過(guò)程。否則會(huì)拋出異常。默認(rèn)采用單鏈表解決沖突,如果鏈表長(zhǎng)度超過(guò),將單鏈表轉(zhuǎn)換為紅黑樹(shù)。內(nèi)部使用紅黑樹(shù)實(shí)現(xiàn),存儲(chǔ)映射。紅黑樹(shù)減弱了對(duì)平衡的要求,降低了保持樹(shù)平衡需要的開(kāi)銷(xiāo),在實(shí)際應(yīng)用中,統(tǒng)計(jì)性能超過(guò)平衡二叉樹(shù)。 引言 showImg(https://segmentfault.com/img/bVbv7Mr?w=242&h=410); 在學(xué)習(xí)《Java編程的邏...
摘要:所以這段代碼也就避免了代碼一中,可能出現(xiàn)因?yàn)槎嗑€程導(dǎo)致多個(gè)實(shí)例的情況。從內(nèi)部看是一個(gè)餓漢式的單例,但是從外部看來(lái),又的確是懶漢式的實(shí)現(xiàn)枚舉使用是不是很簡(jiǎn)單而且因?yàn)樽詣?dòng)序列化機(jī)制,保證了線程的絕對(duì)安全。 在介紹單例模式之前,我們先了解一下,什么是設(shè)計(jì)模式?設(shè)計(jì)模式(Design Pattern):是一套被反復(fù)使用,多數(shù)人知曉的,經(jīng)過(guò)分類編目的,代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。目的:使用設(shè)計(jì)模式是為了...
摘要:隨著計(jì)算機(jī)革命的發(fā)展,不安全的編程方式已逐漸成為編程代價(jià)高昂的主因之一。 隨著計(jì)算機(jī)革命的發(fā)展,不安全的編程方式已逐漸成為編程代價(jià)高昂的主因之一。 1.用構(gòu)造器確保初始化 構(gòu)造器:在創(chuàng)建對(duì)象時(shí)被自動(dòng)調(diào)用的特殊方法. 構(gòu)造器命名問(wèn)題:1.所取得任何名字可能與類的某個(gè)成員命名沖突;2.調(diào)用構(gòu)造器是編譯器的責(zé)任,所以應(yīng)該讓編譯器知道該調(diào)用哪個(gè)方法. 構(gòu)造器命名:與類名相同,所以每個(gè)方法首字...
摘要:對(duì)象創(chuàng)建與訪問(wèn)指令雖然類實(shí)例和數(shù)組都是對(duì)象,但虛擬機(jī)對(duì)類實(shí)例和數(shù)組的創(chuàng)建和操作使用了不同的字節(jié)碼指令。異常處理指令在虛擬機(jī)中,處理異常語(yǔ)句不是由字節(jié)碼指令來(lái)實(shí)現(xiàn)的,而是采用異常表的方式。 《深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐(第二版》讀書(shū)筆記與常見(jiàn)面試題總結(jié) 本節(jié)常見(jiàn)面試題(推薦帶著問(wèn)題閱讀,問(wèn)題答案在文中都有提到): 簡(jiǎn)單介紹一下Class類文件結(jié)構(gòu)(常量池主要存放的是...
閱讀 4325·2021-10-13 09:39
閱讀 494·2021-09-06 15:02
閱讀 3236·2019-08-30 15:53
閱讀 1051·2019-08-30 13:04
閱讀 2057·2019-08-30 11:27
閱讀 2020·2019-08-26 13:51
閱讀 2105·2019-08-26 11:33
閱讀 2911·2019-08-26 10:36