1. 程式人生 > >繼承時方法呼叫順序

繼承時方法呼叫順序

 我們經常在專案中使用繼承,但是往往不太明白,程式執行的順序以及原理,尤其是使用上轉型物件的時候,以及父類子類中都有static變數和方法時,不知道先執行誰。

下面是一個簡單的繼承,來檢視程式碼的執行順序:

  1. package test;

  2. class Person{

  3. static{

  4. System.out.println("父類的靜態塊");

  5. }

  6. Person(){

  7. System.out.println("父類的構造方法");

  8. }

  9. {

  10. System.out.println("父類的普通方法");

  11. }

  12. }

  13. class Student extends Person{

  14. static{

  15. System.out.println("子類的靜態塊");

  16. }

  17. Student(){

  18. System.out.println("子類的構造方法");

  19. }

  20. {

  21. System.out.println("子類的普通方法");

  22. }

  23. }

  24. public class Test {

  25. public static void main(String[] args) {

  26. Student s=new Student();

  27. }

  28. }

執行結果為:

可以看出程式碼的執行順序是:

父類靜態塊中方法----子類靜態塊中方法----父類的普通方法---
父類的構造方法---子類的普通方法---子類的構造方法