学习疯狂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的无参构造函数