继承类的初始化

前面我们已经讨论过实例的初始化，引入继承的概念后，就再有必要对整个初始化过程有所认识。

对于继承类的初始化，将首先初始化父类的静态成员，然后初始化子类的静态成员。随后再初始化类的实例。初始化类的实例时，将首先初始化实例变量，然后初始化构造函数。执行顺序按照先父类后子类的顺序进行。

1. 例如：

2. class parent {

3. int i = 9;

4. int j;

5. parent () {

6. prt("i = " + i + ", j = " + j);

7. j = 39;

8. }

9. static int p 1 =

10. prt("static parent.p 1 initialized");

11.

12. static int prt(String s) {

13. System.out.println(s);

14. return 47;

15. }

16. }

17.

18. public class child extends parent {

19. int k = prt("child.k initialized");

20. child() {

21. prt("k = " + k);

22. prt("j = " + j);

23. }

24. static int c 2 =

25. prt("static child.c 2 initialized");

26. static int prt(String s) {

27. System.out.println(s);

28. return 63;

29. }

30. public static void main(String[] args) {

31. prt("child constructor");

32. child c = new child();

33. }

34. }

该程序的输出如下：

static parent.p 1 initialized //装载父类时进行初始化

static child.c 2 initialized //装载子类时初始化

child constructor

i = 9, j = 0 //先初始化父类

child.k initialized //可以看出实例变量的初始化在构造函数之前

k = 63

j = 39