java子类对象的初始化过程(转)
具体的顺序如下:
初始化顺序:父类静态变量—>父类静态代码块—>子类静态变量—>子类静态代码块—>父类非静态变量—>父类非静态代码块—>父类构造方法—>子类非静态变量—>子类非静态代码块—>子类构造方法。
?
class Father{
//1
private static int fs=10;
//2
static{
System.out.println("1.父类静态变量fs="+fs);
System.out.println("2.父类静态代码块");
}
//5
private int ff=20;
//6
{
System.out.println("5.父类非静态变量ff="+ff);
System.out.println("6.父类非静态代码块");
}
//7
public Father() {
System.out.println("7.父类的构造方法");
}
}
class Sun extends Father{
//3
private static int ss=100;
//4
static{
System.out.println("3.子类静态变量ss="+ss);
System.out.println("4.子类静态代码块");
}
//8
private int sf=200;
//9
{
System.out.println("8.子类非静态变量sf="+sf);
System.out.println("9.子类非静态代码块");
}
//10
public Sun() {
System.out.println("10.子类的构造方法");
}
}
public class Test {
public static void main(String[] args) {
new Sun();
}
}
执行结果:
1.父类静态变量fs=10
2.父类静态代码块
3.子类静态变量ss=100
4.子类静态代码块
5.父类非静态变量ff=20
6.父类非静态代码块
7.父类的构造方法
8.子类非静态变量sf=200
9.子类非静态代码块
10.子类的构造方法