本人剛接觸java,對子類調用父類構造函數的問題有點迷糊,寫了代碼驗證了自己的想法但不知道原因。望得到老師指導,感激!我的理解是子類在創建對象時會先調用父類的相關構造函數,再調用子類自身的構造函數,不知道我的理解對不對。代碼如下:Question:在沒有紅色行代碼的時候,程序先執行了父類的無參構造函數,接著執行了子類的構造函數;當加上紅色行代碼后,雖然人為的調用了父類的2參構造函數,可是為什么父類的無參構造函數沒有先執行?畢竟我創建的A類對象不傳參。另外,即使我的子類構造函數也傳遞2個參數,在沒有紅色行代碼的時候,程序依舊先執行父類的無參構造函數,這是為什么?謝謝!
1 回答

胡說叔叔
TA貢獻1804條經驗 獲得超8個贊
初始化對象的時候,會默認先調用父類的無參構造方法,然后再調用子類的構造方法。實際上是子類構造方法的首行隱含了一個“super();” 你現在顯式的加入了“super(2,3)” 于是會調用父類的有參構造方法,而不去調用無參構造方法。第二個問題也很好理解,當你不寫顯式的加入“super(2,3)”那個隱藏的"super()"就會被調用。
添加回答
舉報
0/150
提交
取消