在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ JAVA的主類本身到底有沒有被實例化?

JAVA的主類本身到底有沒有被實例化?

package staticSuper;

class StaticSuper {
    static {
        System.out.println("super static block");
    }
    StaticSuper(){
        System.out.println("super constructor");
    }
}

public class StaticTests extends StaticSuper {
    static {
        System.out.println("static block");
    }
    StaticTests(){
        System.out.println("main class");
    }
    public static void main(String args[]) {
        System.out.println("in main");
    }
}

結(jié)果:

super static block
static block

疑問:
父類的static塊的內(nèi)容先于子類的static塊的內(nèi)容執(zhí)行,感覺上就像是實例化子類時先實例化父類??蓡栴}是兩個類的構(gòu)造函數(shù)中要求的輸出統(tǒng)統(tǒng)都沒有,因此引發(fā)了我的疑惑——第一,主類,就這里的staticTests到底有沒有被實例化?能否用一個引用變量指向它?第二,如果被實例化了,為何能夠繞過構(gòu)造器?如果沒有被實例化,那為什么運行了static中的內(nèi)容?為什么父類中的static先于子類中的static?
謝謝

回答
編輯回答
厭遇

對象初始化過程:
(1) 主類的超類由高到低按順序初始化靜態(tài)成員
(2) 主類靜態(tài)成員的初始化。
//創(chuàng)建實例時,如果不創(chuàng)建實例,則后面的不執(zhí)行 ,你這了就沒有創(chuàng)建實例
(3) 主類的超類由高到低進行默認構(gòu)造方法的調(diào)用,在調(diào)用每一個超類的默認構(gòu)造方法前,先對此超類進行非靜態(tài)成員的初始化。
(4) 主類非靜態(tài)成員的初始化。
(5) 主類的構(gòu)造方法。

2017年6月7日 04:39