特地做了一些嘗試然后把java構造器的執行順序整理出來.
首先是我測試的代碼:

























FatherProp is construct
Father is construct
SonProp is construct
Son is construct
由此不難看出java類初始化時構造函數調用順序:
(1)初始化對象的存儲空間為零或null值;
(2)按順序分別調用父類成員變量和實例成員變量的初始化表達式;
(3)調用父類構造函數;(如果實用super()方法指定具體的某個父類構造函數則使用指定的那個父類構造函數)
(4)按順序分別調用類成員變量和實例成員變量的初始化表達式;
(5)調用類本身構造函數。