java類中元素初始化次序詳解。本站提示廣大學習愛好者:(java類中元素初始化次序詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是java類中元素初始化次序詳解正文
public class Test4 {
@Test
public void test(){
child child = new child();
}
}
class parent{
public static String parentStaticField = "父類靜態變量";
public String parentNormalField ="父類通俗變量";
static {
System.out.println(parentStaticField);
System.out.println("父類靜態塊");
}
{
System.out.println(parentNormalField);
System.out.println("父類通俗塊");
}
public parent(){
System.out.println("父類結構辦法");
}
}
class child extends parent{
public static String childStaticField = "子類靜態變量";
public String childNormalField ="子類通俗變量";
static {
System.out.println(childStaticField);
System.out.println("子類靜態塊");
}
{
System.out.println(childNormalField);
System.out.println("子類通俗塊");
}
public child(){
System.out.println("子類結構辦法");
}
}
輸入:
父類靜態變量
父類靜態塊
子類靜態變量
子類靜態塊
父類通俗變量
父類通俗塊
父類結構辦法
子類通俗變量
子類通俗塊
子類結構辦法
履行進程:
1、當履行到new child時,裝載器尋覓曾經編譯的child類的代碼(也就是child.class文件)。在裝載的進程中,裝載器留意到它有一個基類,因而它再裝載基類。不論你創不創立基類對象,這個進程總會產生。假如基類還有基類,那末第二個基類也會被裝載,依此類推。
2、履行基礎類的static初始化,然後是下一個派生類的static初始化,依此類推。這個次序異常主要,由於派生類的“static初始化”有能夠要依附基類成員的准確初始化。
3、當一切需要的類都曾經裝載停止,創立child類對象。
4、child類存在父類,則挪用父類的結構函數,可使用super來指定挪用哪一個結構函數。
基類的結構進程和結構次序,同派生類的雷同。起首基類中各個變量依照字面次序停止初始化,然後履行基類的結構函數的其他部門。
5、對子類成員數據依照它們聲明的次序初始化,履行子類結構函數的其他部門。