1. 程式人生 > >java學習-繼承構造器、靜態程式碼塊、普通程式碼塊的執行順序

java學習-繼承構造器、靜態程式碼塊、普通程式碼塊的執行順序

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、子類的靜態程式碼塊執行順序高於父類的普通程式碼快和,構造方法

執行順序圖解

在這裡插入圖片描述