在此我用类似《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构造函数的执行顺序是:
先出现先执行,派生类要先执行其父类的构造函数
转载于:https://blog.51cto.com/yqsshr/132257