2021-05-12 14:32:11
java中子類繼承父類別程式各成員的執行順序詳解
2019-12-10 15:52:49
java的物件導向包括封裝、繼承、多型3個主要要點,那麼子類繼承父類別後程式中各成員的執行順序是怎樣的呢?下面教大家怎麼自己測試其執行順序。
1
首先定義2個類Person和Student,程式碼如圖所示。
2
因為目的是要解決子類繼承父類別後程式的執行順序,所以只執行Student.java就可以了,如果執行Person.java就相當於沒有了繼承關係也失去了意義,故執行程式碼和結果如圖所示。
3
由第二步可以看出靜態程式碼塊是程式首先執行的,而且先執行父類別再執行子類的,並且有幾個物件只執行一次靜態程式碼塊。
其次是從程式主方法開始執行,再執行非靜態程式碼塊和無參建構函式,而且仍然是先執行父類別再執行子類的。
如果子類含有有參的建構函式,那麼執行子類的有參建構函式,就不執行子類的無參建構函式了,但同樣要執行父類別的無參建構函式。
看到這裡你會發現,非靜態程式碼塊和靜態程式碼塊的區別在於非靜態程式碼塊和建構函式一樣,需要建立一次物件就執行一次的。
隨後執行子類的成員函數,如果子類的成員函數重寫了父類別的成員函數,則只執行子類的不執行父類別的。
最後是主函數,因為主函數一個程式只有一個,所以只執行一次本程式的主函數。
4
綜上所述,java中子類繼承父類別程式各成員的執行順序應該是:
父類別的靜態程式碼塊—>子類的靜態程式碼塊—>主方法(執行哪個程式就執行哪個程式的主方法)—>父類別的非靜態程式碼塊—>父類別的無參建構函式—>子類的非靜態程式碼塊—>子類的無參建構函式(若實際子類執行的是有參建構函式,則不執行無參建構函式)—>成員函數(指定執行哪個就執行哪個成員函數,若重寫了父類別成員函數,則只執行子類的成員函數)
相關文章