看到Java编程思想里面提到的父子类构造器的调用顺序,再加上自己对static的理解,特地写了这个博文。
例子1:
输出:
B2
B3
B1
C3
A100
B100
B100
B1
C100
D101
总结:
1.首先static的域和代码块按照顺序执行,这一部分只会执行一次;
2.调用基类的构造器,这个步骤会一直反复递归的执行下去;
3.按照声明的顺序调用成员的成员方法,声明和代码块均是;
4.调用导出类的构造器主体。
例子2
输出:
befor print
B.print
0.0
after print
5.0
//这个0.0说明了,在所有步骤之前,分配给对象的存储空间都为二进制的0;
//然后再调用基类的构造器;然后再到声明顺序调用成员的初始化方法;
总结起来就是:
1.首先static的域和代码块按照顺序执行,这一部分只会执行一次;
2.分配给对象的存储空间都为二进制的0;
3.调用基类的构造器,这个步骤会一直反复递归的执行下去;
4.按照声明的顺序调用成员的成员方法,声明和代码块均是;
5.调用导出类的构造器主体。