學習瘋狂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的無參構造函數