我在網上搜索了很長時間。但沒用。請幫助或嘗試提供一些想法如何實現此目的?爲什麼結果不是在第一個打印「int main」?我想知道的是爲什麼這個程序的結果如下?預先感謝。靜態方法的執行順序(JAVA)
超靜塊
靜塊4
在主
超級構造
構造
class StaticSuper {
static {
System.out.println("super static block");
}
StaticSuper() {
System.out.println("super constructor");
}
}
public class StaticTests extends StaticSuper {
static int rand;
//static initialise
static {
rand = (int) (Math.random() * 6);
System.out.println("static block " + rand);
}
StaticTests() {
System.out.println("constructor");
}
public static void main(String[] args) {
System.out.println("in main");
StaticTests st = new StaticTests();
}
}
謝謝您的回答sincerely.I已經看了你的文章,我有一個問題:我們所說的構造函數之前子類的non_field初始化子類,是不是?我們爲什麼不能從構造函數中調用non_field?我不理解它。 – Manhand
我對此感到很抱歉,我輸入的問題是錯誤的。問題是爲什麼我們不應該從構造函數中調用非final方法(。我已經閱讀過您的文章,並且有一個問題:子類的non_field是在我們調用子類的構造函數之前進行初始化,是不是?我們爲什麼不能從構造函數中調用非final方法?我不明白) – Manhand
@Manhand我用代碼更新了我的答案,以解釋爲什麼它不建議在構造函數中調用非final方法。覈實。 – SkrewEverything