天天看點

java基礎知識---初始化塊、調用順序

學習瘋狂java講義筆記:

1。java的初始化順序,要牢記

class Root{
	static{
		System.out.println("Root的靜态初始化塊");
	}
	{
		System.out.println("Root的普通初始化快");
	}
	public Root()
	{
		System.out.println("Root的無參構造函數");
	}
}
class Mid extends Root{
	static{
		System.out.println("Mid的靜态初始化快");
	}
	{
		System.out.println("Mid的普通初始化快");
	}
	public Mid()
	{
		System.out.println("Mid的無參構造函數");
	}
	public Mid(String name)
	{
		this();
		System.out.println("Mid的有殘構造函數"+name);
	}
}
class Leaf extends Mid{
	static{
		System.out.println("Leaf的靜态初始化快");
	}
	{
		System.out.println("Leaf 的普通初始化快");
	}
	public Leaf(){
		super("瘋狂java講義");
		System.out.println("Leaf的無參構造函數");
	}
}
public class StaticFiledTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Leaf();
		new Leaf();
	}
}
           

結果:

Root的靜态初始化塊

Mid的靜态初始化快

Leaf的靜态初始化快

Root的普通初始化快

Root的無參構造函數

Mid的普通初始化快

Mid的無參構造函數

Mid的有殘構造函數瘋狂java講義

Leaf 的普通初始化快

Leaf的無參構造函數

//第二次newLeaf()的輸出結果

Root的普通初始化快

Root的無參構造函數

Mid的普通初始化快

Mid的無參構造函數

Mid的有殘構造函數瘋狂java講義

Leaf 的普通初始化快

Leaf的無參構造函數