Q: 構造函數(shù)應該是公有嗎?
不,可以公有,可以私有,或者不指定
Q: 構造函數(shù)調用鏈路?
- 構造函數(shù)在新創(chuàng)建類時候被執(zhí)行
- 子類構造函數(shù)會去先調用父類構造函數(shù),一直調用到Object,所以子類的構造函數(shù)最先調用,但是最后執(zhí)行完畢,就像父子關系,必須先創(chuàng)建出父類,才會有子類,方法在棧中,被調用的方法會存放在棧頂,先進后出,先被調用的方法永遠在最后執(zhí)行
如果沒有寫構造函數(shù)?
編譯器會加入一個默認的無參構造函數(shù)
如果有構造函數(shù),但是沒有調用super();
編譯器會幫每個重載版本的構造函數(shù)加上super()調用,super()必須是在第一行就進行調用,否則會編譯錯誤,也可以調用this(),調用當前類中構造函數(shù),但是this()與super()只能同時存在一個
注意:編譯器加入的構造函數(shù)一定是無參數(shù)的版本,如果父類不存在無參數(shù)的構造函數(shù),編譯無法通過