摘要:初始化順序有無父類有將父類加載進內(nèi)存。如果有初始化子類對象。初始化完畢之后,再執(zhí)行構(gòu)造器內(nèi)的方法。初始化完父類后,依次初始化子類的。
初始化順序:
1.有無父類?
有:
將父類加載進內(nèi)存。直到將所有的父類加載完畢。再從頂層父類按照代碼的順序執(zhí)行靜態(tài)代碼,執(zhí)行完最頂層的,在執(zhí)行下一層的,依次類推,直到執(zhí)行完所有的靜態(tài)代碼。
(1)如果有初始化子類對象。那么同樣會先調(diào)用父類的構(gòu)造器,并且會先執(zhí)行最底層父類的構(gòu)造器。
先將所有成員屬性設(shè)置成為默認值,接著依據(jù)代碼的順序初始化所有成員。初始化完畢之后,再執(zhí)行構(gòu)造器內(nèi)的方法。初始化完父類后,依次初始化子類的。
無:
那么接下來的步驟跟(1)處的處理方式是一樣的。
下面給出例子:
package org.csp.test; public class Test extends Insect{ private int k = printInit("Test initialized"); ----(11),類似的要先被清0,然后再調(diào)用printInit()方法 public Test() { System.out.println("k ="+k); ---(12) 初始化屬性后,執(zhí)行構(gòu)造器內(nèi)的代碼 System.out.println("j ="+j); ----(13) } private static int x2 = printInit("Test X2 initialized"); ---(3)因為是靜態(tài)成員 public static void main(String[] args) { System.out.println("haha"); ---(4) Test t = new Test(); ---(5)創(chuàng)建對象,接下去要初始化成員對象,但是要先初始化父類的 } } class Insect { ------(7)先將所有的成員設(shè)置為默認值 private int i =9 ; -----(7)先被設(shè)置為默認值0 -----(8) 按照代碼順序初始屬性 protected int j; -----(7)被設(shè)置為默認值0 static{ System.out.println("hahaaaa"); } **----(1)最先執(zhí)行** Insect() { System.out.println("i = "+i+",j = "+j); ----(9) 執(zhí)行構(gòu)造器內(nèi)的代碼 j=39; ------(10)此處已經(jīng)將父類初始化完畢,返回去初始子類對象 } private static int x1= printInit("static Insect.X1 initialized"); ----(2) static int printInit(String s) { System.out.println(s); return 47; } }
執(zhí)行結(jié)果
hahaaaa static Insect.X1 initialized Test X2 initialized haha i = 9,j = 0 Test initialized k =47 j =39
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/66354.html
摘要:在面向?qū)ο蟮某绦蛟O(shè)計語言中,多態(tài)是繼數(shù)據(jù)抽象和繼承之后的第三種基本特征。 在面向?qū)ο蟮某绦蛟O(shè)計語言中,多態(tài)是繼數(shù)據(jù)抽象和繼承之后的第三種基本特征。 1.再論向上轉(zhuǎn)型 多態(tài)作用:消除類型之間的耦合關(guān)系. 2.轉(zhuǎn)機 綁定:將一個方法調(diào)用同一個方法主體關(guān)聯(lián)起來. 前期綁定:在程序執(zhí)行前就進行綁定(面向過程語言默認綁定方式). 后期綁定:也叫動態(tài)綁定或運行時綁定,在運行時根據(jù)對象的類型進行綁...
摘要:也就是說,一個實例變量,在的對象初始化過程中,最多可以被初始化次。當所有必要的類都已經(jīng)裝載結(jié)束,開始執(zhí)行方法體,并用創(chuàng)建對象。對子類成員數(shù)據(jù)按照它們聲明的順序初始化,執(zhí)行子類構(gòu)造函數(shù)的其余部分。 類的拷貝和構(gòu)造 C++是默認具有拷貝語義的,對于沒有拷貝運算符和拷貝構(gòu)造函數(shù)的類,可以直接進行二進制拷貝,但是Java并不天生支持深拷貝,它的拷貝只是拷貝在堆上的地址,不同的變量引用的是堆上的...
摘要:對子類成員數(shù)據(jù)按照它們聲明的順序初始化,執(zhí)行子類構(gòu)造函數(shù)的其余部分。參考類的初始化順序引了大半類加載的時機 jvm系列 垃圾回收基礎(chǔ) JVM的編譯策略 GC的三大基礎(chǔ)算法 GC的三大高級算法 GC策略的評價指標 JVM信息查看 GC通用日志解讀 jvm的card table數(shù)據(jù)結(jié)構(gòu) Java類初始化順序 Java對象結(jié)構(gòu)及大小計算 Java的類加載機制 Java對象分配簡要流程 年老...
摘要:先說結(jié)論對于具有繼承關(guān)系的類,它們的類和對象構(gòu)造順序為父類的類構(gòu)造器子類的類構(gòu)造器父類成員變量的賦值和實例代碼塊父類的構(gòu)造函數(shù)子類成員變量的賦值和實例代碼塊子類的構(gòu)造函數(shù)。類實例塊是放在該類構(gòu)造函數(shù)最前面和父類構(gòu)造函數(shù)之后執(zhí)行的。 先說結(jié)論對于具有繼承關(guān)系的類,它們的類和對象構(gòu)造順序為:父類的類構(gòu)造器() -> 子類的類構(gòu)造器() -> 父類成員變量的賦值和實例代碼塊 -> 父類的構(gòu)造...
摘要:拆箱將包裝類型轉(zhuǎn)換為基本類型的過程。否則會拋出異常。默認采用單鏈表解決沖突,如果鏈表長度超過,將單鏈表轉(zhuǎn)換為紅黑樹。內(nèi)部使用紅黑樹實現(xiàn),存儲映射。紅黑樹減弱了對平衡的要求,降低了保持樹平衡需要的開銷,在實際應(yīng)用中,統(tǒng)計性能超過平衡二叉樹。 引言 showImg(https://segmentfault.com/img/bVbv7Mr?w=242&h=410); 在學(xué)習(xí)《Java編程的邏...
閱讀 1767·2023-04-26 01:41
閱讀 3073·2021-11-23 09:51
閱讀 2733·2021-10-09 09:43
閱讀 9019·2021-09-22 15:13
閱讀 2452·2021-09-07 09:59
閱讀 2624·2019-08-30 15:44
閱讀 1132·2019-08-30 12:45
閱讀 2616·2019-08-30 12:43