類加載機制,初始化的問題

public class Test12{
public static void main(String[] args){

Z z = new Z();
}


}




class X{
public X(){
System.out.println("x構造方法");
}

}
class Y{


static{
System.out.println("Y靜態代碼塊");
}
public Y(){
System.out.println("Y構造方法");
}
X x = new X();
{
System.out.println("Y構造快");
}

}
class Z extends Y{
{

System.out.println("Z構造快");
}
static{
System.out.println("Z靜態代碼塊");
}
public Z(){
System.out.println("Z構造方法");
}

}



最後輸出結果:

Y靜態代碼塊
Z靜態代碼塊
x構造方法
Y構造快
Y構造方法
Z構造快
Z構造方法


總結:

特點:普通代碼塊可以在一個方法中用來劃分作用域
構造快是在創建對象時優先構造方法被調用
靜態代碼塊,在該類被調用時只會執行一次,在實際開發中通常用於初始化應用程序需要的數據等。(常用)


創建子類對象時先去加載父類對象,然後先調用父類的構造,在調用子類的構造


在調用子類的構造方法時,無論寫不寫super();這個方法,都會調用父類的無參構造方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章