先后順序如下!
成都創(chuàng)新互聯(lián)始終堅持【策劃先行,效果至上】的經(jīng)營理念,通過多達十多年累計超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的推廣解決方案,現(xiàn)已廣泛運用于各行各業(yè)的客戶,其中包括:隧道混凝土攪拌車等企業(yè),備受客戶表揚。
1.靜態(tài)塊
2.塊
3.構(gòu)造器
4.父類構(gòu)造器
運行順序為:
1. 靜態(tài)塊
2. 父類構(gòu)造器
3. 本類中的塊
4. 本類的構(gòu)造器
progressBar.set...
這些代碼調(diào)用以后,看能不能跟著調(diào)用界面刷新的方法,refresh,update之類(不清楚java怎么寫,我說的是C#的)
這里只說一個完整的結(jié)果 至于為什么是這樣的順序 可以參考我以前的文章 深入剖析java類的構(gòu)造方式
如果父類有靜態(tài)成員賦值或者靜態(tài)初始化塊 執(zhí)行靜態(tài)成員賦值和靜態(tài)初始化塊 如果類有靜態(tài)成員賦值或者靜態(tài)初始化塊 執(zhí)行靜態(tài)成員賦值和靜態(tài)初始化塊 將類的成員賦予初值(原始類型的成員的值為規(guī)定值 例如int型為 float型為 f boolean型為false 對象類型的初始值為null) 如果構(gòu)造方法中存在this()調(diào)用(可以是其它帶參數(shù)的this()調(diào)用)則執(zhí)行之 執(zhí)行完畢后進入第 步繼續(xù)執(zhí)行 如果沒有this調(diào)用則進行下一步 (這個有可能存在遞歸調(diào)用其它的構(gòu)造方法) 執(zhí)行顯式的super()調(diào)用(可以是其它帶參數(shù)的super()調(diào)用)或者隱式的super()調(diào)用(缺省構(gòu)造方法) 此步驟又進入一個父類的構(gòu)造過程并一直上推至Object對象的構(gòu)造 執(zhí)行類申明中的成員賦值和初始化塊 執(zhí)行構(gòu)造方法中的其它語句
其中第 步是比較麻煩的 因為this調(diào)用實際上會調(diào)用類的另外一個構(gòu)造方法 最終應(yīng)該是執(zhí)行類的某個構(gòu)造方法 它可能會顯示的調(diào)用super 但是無論是否調(diào)用super 最終都是執(zhí)行super的 也就是父類的構(gòu)造方法并一直這樣遞歸到Object 所以在子類和父類的構(gòu)造中 首先構(gòu)造或者說執(zhí)行的是父類的構(gòu)造 但是它是由子類的構(gòu)造方法調(diào)用的 先于構(gòu)造方法的方法體里面的內(nèi)容 這個是由編譯器決定的 所以我感覺簡單直觀一些的順序表述應(yīng)該是
如果父類有靜態(tài)成員賦值或者靜態(tài)初始化塊 執(zhí)行靜態(tài)成員賦值和靜態(tài)初始化塊 如果類有靜態(tài)成員賦值或者靜態(tài)初始化塊 執(zhí)行靜態(tài)成員賦值和靜態(tài)初始化塊 將類的成員賦予初值(原始類型的成員的值為規(guī)定值 例如int型為 float型為 f boolean型為false 對象類型的初始值為null) 執(zhí)行構(gòu)造方法 并可能遞歸調(diào)用this() 最終先執(zhí)行父類的構(gòu)造方法并一直遞歸到Object的構(gòu)造方法的執(zhí)行 父類的構(gòu)造方法執(zhí)行完成后 執(zhí)行類申明中的成員賦值和初始化塊 執(zhí)行構(gòu)造方法中的其它語句
最終的簡化順序版本是
父類的靜態(tài)成員賦值和靜態(tài)塊 子類的靜態(tài)成員和靜態(tài)塊 父類的構(gòu)造方法 父類的成員賦值和初始化塊 父類的構(gòu)造方法中的其它語句 子類的成員賦值和初始化塊 子類的構(gòu)造方法中的其它語句 lishixinzhi/Article/program/Java/hx/201311/27010
這兩句話只是設(shè)置屬性啊。
file.setSize(200,300);
file.setVisible(true);
不會最后執(zhí)行的。你打個斷點在
file.Calendar();//顯示當前日期
,然后看file屬性,應(yīng)該是會被改變的