一、先执行内部静态对象的构造方法,如果有多个按定义的先后顺序执行;静态对象在构造的时候也是也先执行其内部的静态对象。

二、再调用父类的构造方法(父类还有父类的话,从最开始的基类开始调用),如果没有明显指定调用父类自定义的构造方法,那么编译器会调用默认的父类构造方法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. }