国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java對象初始化順序

incredible / 3141人閱讀

摘要:初始化順序有無父類有將父類加載進內(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

相關(guān)文章

  • Java 多態(tài)(8)

    摘要:在面向?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ù)對象的類型進行綁...

    v1 評論0 收藏0
  • 談?wù)?em>Java的面向對象

    摘要:也就是說,一個實例變量,在的對象初始化過程中,最多可以被初始化次。當所有必要的類都已經(jīng)裝載結(jié)束,開始執(zhí)行方法體,并用創(chuàng)建對象。對子類成員數(shù)據(jù)按照它們聲明的順序初始化,執(zhí)行子類構(gòu)造函數(shù)的其余部分。 類的拷貝和構(gòu)造 C++是默認具有拷貝語義的,對于沒有拷貝運算符和拷貝構(gòu)造函數(shù)的類,可以直接進行二進制拷貝,但是Java并不天生支持深拷貝,它的拷貝只是拷貝在堆上的地址,不同的變量引用的是堆上的...

    ormsf 評論0 收藏0
  • 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對象分配簡要流程 年老...

    boredream 評論0 收藏0
  • java中具有繼承關(guān)系的類及其對象始化順序

    摘要:先說結(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)造...

    legendmohe 評論0 收藏0
  • Java基礎(chǔ)(筆記)

    摘要:拆箱將包裝類型轉(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編程的邏...

    PrototypeZ 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<