java類執行順序問題
經常遇到的面試題,一個類繼承另一個類然後問輸出的結果是什麽。個人覺得就是考類的輸出問題(親測)
第一:單一的類執行順序
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類執行順序問題