繼承時方法呼叫順序
阿新 • • 發佈:2019-02-15
我們經常在專案中使用繼承,但是往往不太明白,程式執行的順序以及原理,尤其是使用上轉型物件的時候,以及父類子類中都有static變數和方法時,不知道先執行誰。
下面是一個簡單的繼承,來檢視程式碼的執行順序:
-
package test;
-
class Person{
-
static{
-
System.out.println("父類的靜態塊");
-
}
-
Person(){
-
System.out.println("父類的構造方法");
-
}
-
{
-
System.out.println("父類的普通方法");
-
}
-
}
-
class Student extends Person{
-
static{
-
System.out.println("子類的靜態塊");
-
}
-
Student(){
-
System.out.println("子類的構造方法");
-
}
-
{
-
System.out.println("子類的普通方法");
-
}
-
}
-
public class Test {
-
public static void main(String[] args) {
-
Student s=new Student();
-
}
-
}
執行結果為:
可以看出程式碼的執行順序是:
父類靜態塊中方法----子類靜態塊中方法----父類的普通方法---
父類的構造方法---子類的普通方法---子類的構造方法