講解在代碼中:
package 類執行順序;
/**
* java類執行順序
*
* 1、如果父類有靜態成員賦值或者靜態初始化塊,執行靜態成員賦值和靜態初始化塊
* 2、如果類有靜態成員賦值或者靜態初始化塊,執行靜態成員賦值和靜態初始化塊
* 3、將類的成員賦予初值(原始類型的成員的值為規定值,例如int型為0,float型為0.0f,boolean型為false;對象類型的初始值為null)
* 4、如果構造方法中存在this()調用(可以是其它帶參數的this()調用)則執行之,執行完畢后進入第7步繼續執行,如果沒有this調用則進行下一步。(這個有可能存在遞歸調用其它的構造方法)
* 5、執行顯式的super()調用(可以是其它帶參數的super()調用)或者隱式的super()調用(缺省構造方法),此步驟又進入一個父類的構造過程并一直上推至Object對象的構造。
* 6、執行類申明中的成員賦值和初始化塊。
* 7、執行構造方法中的其它語句。
* */
public class SonClass extends FatherClass{
{
System.out.println("SonClass中初始化代碼塊");
}
static {
System.out.println("SonClass中static初始化代碼塊");
}
public SonClass() {
// TODO Auto-generated constructor stub
System.out.println("SonClass中構造方法");
}
public static void main(String[] args) {
//FatherClass class1 = new FatherClass();
SonClass class2 = new SonClass();
}
}
package 類執行順序;
public class FatherClass {
{
System.out.println("FatherClass的初始化塊");
}
static {
System.out.println("FatherClass中static初始化代碼塊");
}
public FatherClass() {
// TODO Auto-generated constructor stub
System.out.println("FatherClass的構造方法");
}
}