1. 程式人生 > >java中物件產生初始化過程

java中物件產生初始化過程

以前面試的時候,很多公司的筆試題中有關new一個物件有關一系列初始化的過程的選擇題目。請看下面的題目。

class Parent {
	static {
		System.out.println("---static Parnet---");
	}

	public Parent() {
		System.out.println("----Parent----");
	}
}

class Child extends Parent {
	static Other other = new Other();

	public Child() {
		System.out.println("----Child-----");
	}

	Brother b = new Brother();
}

class Brother {
	static {
		System.out.println("---static Brother---");
	}

	public Brother() {
		System.out.println("----Brother----");
	}
}

class Other {
	static {
		System.out.println("---static Other---");
	}

	public Other() {
		System.out.println("---Other---");
	}
}

public class Test {
	public static void main(String[] args) {
         Child child=new Child();
	}
}

這個題目如果不瞭解java中例項化一個類的時候,更加全面的初始化過程真的還做不出來,因為我們做專案的時候可能沒必要這樣把。下面直接給出答案。

---static Parnet---
---static Other---
---Other---
----Parent----
---static Brother---
----Brother----
----Child-----

答案為什麼是這樣的呢,看了下面總結的你就知道為什麼了哦。更加底層的分析應該從java虛擬機器生成的位元組碼來分析。求大牛們給出java位元組碼的底層分析。。。。。