通過(guò)實(shí)例解析Java類(lèi)初始化和實(shí)例初始化
一、背景:
存在類(lèi)Father和類(lèi)Son,其中類(lèi)Son繼承了Father類(lèi)。
1.父類(lèi)Father代碼
2.子類(lèi)Son代碼
*初始化包括?
成員變量賦初值、代碼塊、構(gòu)造器
注意方法是被調(diào)用的,有人調(diào)用它它才執(zhí)行相應(yīng)的東西。
二、類(lèi)初始化
在一開(kāi)始,注釋掉main方法中的代碼,執(zhí)行結(jié)果如下。
類(lèi)初始化:
1.創(chuàng)建實(shí)例需要先加載并初始化該類(lèi)
此處main方法所在的類(lèi)需要先加載并初始化
2.子類(lèi)初始化要先初始化其父類(lèi)
3.類(lèi)初始化即是執(zhí)行clinit(ClassInit)方法
A.(靜態(tài)!)分為 靜態(tài)變量的顯式賦值操作 和 靜態(tài)代碼塊B.上到下的順序執(zhí)行C.這個(gè)clinit方法只執(zhí)行一次
將父類(lèi)中的static代碼塊放到靜態(tài)變量之前,可以看到結(jié)果按順序改變。
三、實(shí)例初始化
取消Son類(lèi)中main方法的第一句注釋?zhuān)缦聢D所示。
此時(shí)將會(huì)先進(jìn)行類(lèi)初始化,再進(jìn)行實(shí)例初始化,結(jié)果如下。
實(shí)例初始化:
1.實(shí)例初始化即是執(zhí)行init方法
2.有幾個(gè)構(gòu)造器就有幾個(gè)init方法,每次創(chuàng)建對(duì)象都會(huì)執(zhí)行相應(yīng)的init方法。
3.init方法由非靜態(tài)實(shí)例變量顯式賦值、非靜態(tài)代碼塊和相應(yīng)的構(gòu)造器組成。
4.非靜態(tài)實(shí)例變量賦值與非靜態(tài)代碼塊按上到下的順序執(zhí)行,構(gòu)造器在最后執(zhí)行。
5.init方法的首行是super()或者帶參數(shù)的super(),即父類(lèi)init方法。
父類(lèi)中的test()方法輸出的是(4),為何父類(lèi)中結(jié)果為932?
非靜態(tài)方法前有一個(gè)默認(rèn)的對(duì)象this
this在構(gòu)造器(或者init方法)表示的是正在創(chuàng)建的對(duì)象。
這里是在創(chuàng)建Son類(lèi)的對(duì)象,所以執(zhí)行的是重寫(xiě)后的代碼。
四、總結(jié)
初始化操作包括成員變量、靜態(tài)/非靜態(tài)代碼塊和構(gòu)造器。
1.先類(lèi)初始化,再實(shí)例初始化。
2.都是先父類(lèi)再子類(lèi)。
3.類(lèi)初始化關(guān)鍵詞'靜態(tài)'。
4.實(shí)例初始化關(guān)鍵詞'非靜態(tài)',構(gòu)造器在最后。
5.注意構(gòu)造器和實(shí)例初始化init方法中的this對(duì)象。
五、補(bǔ)充
哪些方法不能被重寫(xiě)?
final方法 靜態(tài)方法 private等子類(lèi)中不可見(jiàn)方法多態(tài)性的體現(xiàn)?
子類(lèi)若重寫(xiě)了父類(lèi)的方法,則通過(guò)子類(lèi)對(duì)象調(diào)用的一定是子類(lèi)重寫(xiě)過(guò)的方法 非靜態(tài)方法默認(rèn)的調(diào)用對(duì)象是this this對(duì)象在構(gòu)造器或者init方法中就是正在創(chuàng)建的對(duì)象以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Laravel操作session和cookie的教程詳解2. html小技巧之td,div標(biāo)簽里內(nèi)容不換行3. XML入門(mén)的常見(jiàn)問(wèn)題(一)4. css進(jìn)階學(xué)習(xí) 選擇符5. 將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法6. PHP字符串前后字符或空格刪除方法介紹7. jsp實(shí)現(xiàn)登錄界面8. 解析原生JS getComputedStyle9. 淺談SpringMVC jsp前臺(tái)獲取參數(shù)的方式 EL表達(dá)式10. Echarts通過(guò)dataset數(shù)據(jù)集實(shí)現(xiàn)創(chuàng)建單軸散點(diǎn)圖
