1 回答

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
Java中初始化子類的時(shí)候,首先加載父類的靜態(tài)變量和靜態(tài)語句塊(按照代碼上下順序執(zhí)行),然后加載子類的靜態(tài)變量和靜態(tài)語句塊(按照代碼上下順序執(zhí)行),然后加載父類的非靜態(tài)變量和非靜態(tài)語句塊(按照代碼上下順序執(zhí)行),再加載父類的構(gòu)造函數(shù),然后加載子類的非靜態(tài)變量和非靜態(tài)語句塊(按照代碼上下順序執(zhí)行),最后加載子類的構(gòu)造函數(shù)。
在此程序中,初始化子類BigEgg2的時(shí)候需先加載其父類Egg2,初始化Egg2中的變量y即實(shí)例化Egg2中的Yolk,輸出第一行。
然后調(diào)用Egg2的構(gòu)造方法,輸出第二行。
進(jìn)入子類BigEgg2的構(gòu)造方法,在構(gòu)造方法中調(diào)用insertYolk方法,其參數(shù)是實(shí)例化Yolk類,但此Yolk指的是BigEgg2中的Yolk,因?yàn)槠淅^承自Egg2中Yolk,故先調(diào)用Egg2中的構(gòu)造方法,輸出第三行。
然后調(diào)用BigEgg2中的Yolk構(gòu)造方法,輸出第四行。
insertYolk方法調(diào)用后使得變量y指向BigEgg2中的Yolk實(shí)例,因此調(diào)用g方法的時(shí)候,其中y.f()調(diào)用的是BigEgg2中的Yolk中的f方法,輸出第五行
添加回答
舉報(bào)