package test;

class Unit...{
public Unit(String msg)...{
System.out.println("Unit constructor "+msg);
}
}
class Super...{
private Unit u = new Unit("inside Super");
private static Unit su1 = new Unit("static field before static block");
static...{
System.out.println("Super static ");
}

public Super()...{
System.out.println("Super constructor");
}
private static Unit su2 = new Unit("static field after static block");
}
public class Order extends Super...{
static...{
System.out.println("Order static");
}
public Unit u = new Unit("inside Order");

public Order()...{
System.out.println("Order constructor");
}

/** *//**
* @param args
*/
public static void main(String[] args) ...{
// TODO Auto-generated method stub
new Order();
}
}
//输出:
//Unit constructor static field before static block
//Super static
//Unit constructor static field after static block
//Order static
//Unit constructor inside Super
//Super constructor
//Unit constructor inside Order
//Order constructor
初始化顺序
1、父类static block、static field //看出现的顺序
2、子类static block、static field //看出现的顺序
3、 父类non-static域
4、 父类constructor
5、 子类non-static域
6、 子类constructor
本文详细解析了Java中类及静态成员的初始化顺序,并通过一个具体示例展示了父类与子类静态成员、实例成员的构造过程。了解这些顺序对于理解Java程序运行机制至关重要。

被折叠的 条评论
为什么被折叠?



