求解圖中的運行結果為什么是這樣的。
1 回答

小唯快跑啊
TA貢獻1863條經驗 獲得超2個贊
Java中初始化子類的時候,首先加載父類的靜態變量和靜態語句塊(按照代碼上下順序執行),然后加載子類的靜態變量和靜態語句塊(按照代碼上下順序執行),然后加載父類的非靜態變量和非靜態語句塊(按照代碼上下順序執行),再加載父類的構造函數,然后加載子類的非靜態變量和非靜態語句塊(按照代碼上下順序執行),最后加載子類的構造函數。
在此程序中,初始化子類BigEgg2的時候需先加載其父類Egg2,初始化Egg2中的變量y即實例化Egg2中的Yolk,輸出第一行。
然后調用Egg2的構造方法,輸出第二行。
進入子類BigEgg2的構造方法,在構造方法中調用insertYolk方法,其參數是實例化Yolk類,但此Yolk指的是BigEgg2中的Yolk,因為其繼承自Egg2中Yolk,故先調用Egg2中的構造方法,輸出第三行。
然后調用BigEgg2中的Yolk構造方法,輸出第四行。
insertYolk方法調用后使得變量y指向BigEgg2中的Yolk實例,因此調用g方法的時候,其中y.f()調用的是BigEgg2中的Yolk中的f方法,輸出第五行
添加回答
舉報
0/150
提交
取消