一、先执行内部静态对象的构造方法,如果有多个按定义的先后顺序执行;静态对象在构造的时候也是也先执行其内部的静态对象。
二、再调用父类的构造方法(父类还有父类的话,从最开始的基类开始调用),如果没有明显指定调用父类自定义的构造方法,那么编译器会调用默认的父类构造方法super()。但是如果要调用父类自定义的构造方法,要在子类的构造方法中明确指定。
三、按声明顺序将成员引用对象变量初始化。
四、最后调用自身的构造方法。
[java] view plain copy
1. class Animal{
2. String name;
3. Animal() {
4. "class Animal");
5. }
6. Animal(String name){
7. this.name = name;
8. " class Animal");
9. printNumber();
10. }
11.
12. public void printNumber(){
13.
14. }
15. }
16.
17. class Fish extends Animal{
18. Fish() {
19. "class Fish");
20. }
21. }
22.
23. class GoldFish extends Fish {
24. GoldFish() {
25. "class GoldFish");
26. }
27. }
28.
29. class Cat {
30. Cat(){
31. "class cat");
32. }
33. }
34.
35. class Rabbit {
36. private static int number;
37. private static Cat cat = new Cat();
38. public Rabbit() {
39. number++;
40. "class rabbit");
41. }
42. }
43.
44. class Dog extends Animal{
45. public int dogNumber;
46. private GoldFish goldFish = new GoldFish();
47. static Rabbit blackRabbit = new Rabbit();
48. static Rabbit whiterabbit = new Rabbit();
49.
50. public Dog() {
51. super("Tom");
52. "class Dog");
53. 10;
54. "The dog's number is:" + dogNumber);
55. }
56.
57. public void printNumber(){
58. "The dog's number is:" + dogNumber);
59. }
60. }
61.
62. public class TestInheritanceConstructor extends Animal {
63. public static void main(String[] args){
64. new Dog(); //Test the executive order of constructor
65. }
66. }