java 構造器初始化順序
阿新 • • 發佈:2018-12-19
在類的內部,變數定義的先後順序決定了初始化的順序。即使變數定義散佈於方法定義之中,它們仍舊會在**任何方法(包括構造器)**被呼叫之前得到初始化。
class Window {
Window(int marker){
System.out.println("window(" + marker + ")");
}
}
class House {
Window w1 = new Window(1);
House(){
System.out.println("House()");
w3 = new Window(33) ;
}
Window w2 = new Window(2);
void f(){
System.out.println("f()");
}
Window w3 = new Window(3);
}
public class Main {
public static void main(String[] args) {
House h = new House();
h.f();
}
}
output
window(1)
window(2)
window(3)
House()
window(33)
f()
w3這個引用被初始化了兩次,一次在呼叫構造器前,一次在呼叫期間。第一次引用的物件將被丟棄,並作為垃圾回收。