1. 程式人生 > >java類執行順序問題

java類執行順序問題

面試題 ext per 類的構造函數 on() system 靜態代碼塊 父類 rgs

經常遇到的面試題,一個類繼承另一個類然後問輸出的結果是什麽。個人覺得就是考類的輸出問題(親測)

第一:單一的類執行順序

package Test;

public class person {

static{
System.out.println("父類的靜態塊");
}

person(){
System.out.println("父類的構造方法");
}

{
System.out.println("父類的非靜態代碼塊");
}



public static void main(String[] args) {
System.out.println("父類的主函數main");
person p = new person();
}

}

打印:

父類的靜態塊
父類的主函數main
父類的非靜態代碼塊
父類的構造方法

輸出結果為:父類的靜態塊-->父類的主函數main-->父類的非靜態塊-->父類的構造函數

第二:子類繼承父類,創建子類對象,代碼執行的順序(親測)

package Test;

public class SonTest extends person {
static{
System.out.println("子類的靜態代碼塊");
}
{
System.out.println("子類的非靜態代碼塊");
}
SonTest(){
System.out.println("子類的構造函數");
}
public static void main(String[] args) {
System.out.println("子類的主函數main");
SonTest s = new SonTest();
}
}

打印:

父類的靜態塊
子類的靜態代碼塊
子類的主函數main
父類的非靜態代碼塊
父類的構造方法
子類的非靜態代碼塊
子類的構造函數

輸出結果為:父類的靜態代碼塊-->子類的靜態代碼塊-->子類的主函數main-->父類非靜態代碼塊-->父類的構造函數--子類的非靜態代碼塊-->子類的構造函數

java類執行順序問題