package test;
class parent
static
public parent()
}
class child extends parent
static
public child()
}
public class staticiniblockordertest
}
分析:物件的初始化順序:首先執行父類靜態的內容,父類靜態的內容執行完畢後,接著去執行子類的靜態的內容,當子類的靜態內容執行完畢之後,再去看父類有沒有非靜態**塊,如果有就執行父類的非靜態**塊,父類的非靜態**塊執行完畢,接著執行父類的構造方法;父類的構造方法執行完畢之後,它接著去看子類有沒有非靜態**塊,如果有就執行子類的非靜態**塊。子類的非靜態**塊執行完畢再去執行子類的構造方法。總之一句話,靜態**塊內容先執行,接著執行父類非靜態**塊和構造方法,然後執行子類非靜態**塊和構造方法。
而且子類的構造方法,不管這個構造方法帶不帶引數,預設的它都會先去尋找父類的不帶引數的構造方法。如果父類沒有不帶引數的構造方法,那麼子類必須用supper關鍵子來呼叫父類帶引數的構造方法,否則編譯不能通過。
本文**:
Java 靜態語句塊 語句塊 建構函式
以下是一道筆試題 package com.example public class parent static package com.example public class child extends parent static public static void main string ar...
靜態語句塊 構造語句塊和建構函式的執行順序
public class a 非靜態 塊 靜態 塊 static public class bextends a 非靜態語句塊 靜態語句塊 static public static void main string args 執行結果 new兩次 public class bextends a 非靜...
靜態語句塊 構造語句塊以及建構函式的執行順序
class helloa static public class hellob extends helloa static public static void main string args 輸出 static astatic b main start i m a class helloa i ...