java學習-繼承構造器、靜態程式碼塊、普通程式碼塊的執行順序
阿新 • • 發佈:2018-11-10
1、首先建立三個類
1.1 PPDemo.java
public class PPDemo {
static{
System.out.println("PPDemo static...");
}
{
System.out.println("PPDemo ...");
}
public PPDemo() {
System.out.println("PPDemo()....");
}
}
1.2 PDemo.java
public class PDemo extends PPDemo { static { System.out.println("PDemo static..."); } { System.out.println("PDemo..."); } PDemo(){ System.out.println("PDemo() ..."); } }
1.3 CDemo.java
public class CDemo extends PDemo {
static {
System.out.println("CDemo static ....");
}
{
System.out.println("CDemo ....");
}
public CDemo(){
System.out.println(" CDemo() ...");
}
}
2、測試
public class ExtendsDemo { public static void main(String[] args){ CDemo cDemo=new CDemo(); } }
結果:
PPDemo static...
PDemo static...
CDemo static ....
PPDemo ...
PPDemo()....
PDemo...
PDemo() ...
CDemo ....
CDemo() ...
結論:
1、靜態程式碼塊的最先執行,父類的靜態程式碼塊優先於子類執行
2、普通程式碼塊的執行順序優先於構造方法
3、子類的普通程式碼塊執行順序低於父類構造方法
4、子類的靜態程式碼塊執行順序高於父類的普通程式碼快和,構造方法