//主函數(shù)
package?com.java.CarRent;
public??class?Initial?{
????public?static?void?main(String[]?args)?{
????????Son?s=new?Son();
????}
}
//Parent?類(lèi)
package?com.java.CarRent;
public?class?Parent?{
????{
????????System.out.println("A");
????}
????static{
????????System.out.println("B");
????}
????public?Parent(){
????????System.out.println("C");
????}
}
//Son?類(lèi)
package?com.java.CarRent;
public?class?Son?extends?Parent{
????{
????????System.out.println("D");
????}
????static{
????????System.out.println("E");
????}
????public?Son(){
????????System.out.println("F");
????}
????}
//能不能解釋一下答案?,關(guān)鍵是其中的static初始化沒(méi)理解

2018-06-11
在一個(gè)不存在繼承的類(lèi)中:初始化static變量,執(zhí)行static初始化快-->初始化普通成員變量(如果有賦值語(yǔ)句),執(zhí)行普通初始化塊-->構(gòu)造方法
在一個(gè)存在繼承的類(lèi)中:初始化父類(lèi)static成員變量,運(yùn)行父類(lèi)static初始化塊-->初始化子類(lèi)static成員變量,運(yùn)行子類(lèi)static初始化塊-->初始化父類(lèi)實(shí)例成員變量(如果有賦值語(yǔ)句),執(zhí)行父類(lèi)普通初始化塊-->父類(lèi)構(gòu)造方法-->初始化子類(lèi)實(shí)例成員變量(如果有賦值語(yǔ)句)及普通初始化塊-->子類(lèi)構(gòu)造方法。
注意:其中變量初始化(賦值)和初始化塊的執(zhí)行與相關(guān)語(yǔ)句在源碼中的放置順序一致,不過(guò)變量聲明會(huì)最先執(zhí)行
2018-07-31
不懂的{}這個(gè)的,再補(bǔ)充下剛弄懂
static{...}是靜態(tài)塊,而只有{...}的是叫做構(gòu)造塊。
? ? 靜態(tài)塊在一個(gè)程序里面只執(zhí)行一次;
? ? 而構(gòu)造塊是,只要建立一個(gè)對(duì)象,構(gòu)造代碼塊都會(huì)執(zhí)行一次。
? ? 靜態(tài)塊優(yōu)先于主方法的執(zhí)行,靜態(tài)塊優(yōu)先于構(gòu)造快,然后是構(gòu)造方法的執(zhí)行,而且只執(zhí)行一次!
????