class?A?{
????static?{
????????System.out.print("1");
????}????public?A()?{
????????System.out.print("2");
????}
}class?B?extends?A{
????static?{
????????System.out.print("a");
????}????public?B()?{
????????System.out.print("b");
????}
}public?class?Hello?{
????public?static?void?main(String[]?args)?{
????????A?ab?=?new?B();
????????ab?=?new?B();
????}
}為什么是1a2b2b,能說(shuō)一說(shuō)原理嗎?
2 回答

Home_羈絆
TA貢獻(xiàn)4條經(jīng)驗(yàn) 獲得超6個(gè)贊
執(zhí)行順序:靜態(tài)代碼塊(類加載的時(shí)候執(zhí)行,先父類后子類?)?-->構(gòu)造代碼塊(先父類后子類?)?-->構(gòu)造函數(shù)?(先父類后子類?)
已采納

望遠(yuǎn)
TA貢獻(xiàn)1017條經(jīng)驗(yàn) 獲得超1032個(gè)贊
像一樓說(shuō)的靜態(tài)代碼塊只會(huì)被執(zhí)行一次(類加載的時(shí)候執(zhí)行靜態(tài)代碼塊),實(shí)例化子類的時(shí)候會(huì)先實(shí)例化父類,說(shuō)的清楚一點(diǎn)就是,具體步驟1,先加載父類,,2。加載子類,3.實(shí)例化父類,4,實(shí)例化子類;所以
A?ab?=?new?B();?//輸出?1?a?2?b??;
但是靜態(tài)代碼塊只會(huì)被執(zhí)行一次,所以
?ab?=?new?B();?//輸出?2?b
添加回答
舉報(bào)
0/150
提交
取消