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