在此我用类似《Thinking in Java》的一个例子来说明
 
pakage com.yqs.test
 
class Milk {
   publcic Milk() {
     System.out.println("Constrator Milk be called!");
   }
}
 
class Bread {
  public Bread(){
     System.out.println("Constrator Bread be called!");
  }
}
 
class Apple {
  public Apple(){
     System.out.println("Constrator Apple be called!");
  }
}
 
class Orangle extends Apple{
  public Orangle(){
     System.out.println("Constrator Orangle be called!");
  }
}
 
class Water extends Orangle {
  public Water(){
     System.out.println("Constrator Water be called!");
  }
}
 
public class Test {
  Milk m = new Milk();
  Water w = new Water();
  Bread b = new Bread();
 public Test() {
  System.out.println("Constrator Test be called!");
}
}
 
执行的结果是:
Constrator Milk be called!
Constrator Apple be called!
Constrator Orangebe called!
Constrator Water be called!
Constrator Test be called!
 
所以java构造函数的执行顺序是:
先出现先执行,派生类要先执行其父类的构造函数