在单个类中,初始化的顺序为:静态成员>非静态成员初始化>构造函数。
下面对Java继承关系中类的初始化顺序做出说明:Java代码如下
package access;
class T{
private int n = f();
static{
System.out.println("T static!");
}
T(){System.out.println("T construct!");};
public int f(){
System.out.println("T---f()");
return 1;
}
}
public class Tchild extends T {
private int m = g();
static{
System.out.println("Tchild static");
}
Tchild(){System.out.println("Tchild construct!");};
public int g(){
System.out.println("Tchild---g()");
return 1;
}
public static void main(String[] args) {
Tchild t =new Tchild();
}
}
上面的代码中包含了继承关系,输出结果为:
T static!
Tchild static
T---f()
T construct!
Tchild---g()
Tchild construct!
可以看出初始化顺序为:
(1)按照 父-->子 的顺序初始化所有静态成员
(2)按照父--->子顺序分别初始化非静态成员、构造函数。