《Java编程思想》复用类一章,提出基类的子对象的构建过程是从基类“向外”进行扩散的。
下面通过实例进行讲解,首先看下面的代码:
import static net.mindview.util.Print.*; //《java编程思想》提供的类库
/**
* @author Administrator
*
*/
public class Cat extends Animal {
public Cat() {
// TODO Auto-generated constructor stub
print("Caretoon constructor");
}
public static void main(String[] args) {
Cat x = new Cat();
}
}
class Biology {
Biology() {
// TODO Auto-generated constructor stub
print("Art constructor");
}
}
class Animal extends Biology {
Animal() {
// TODO Auto-generated constructor stub
print("Drawing constructor");
}
}
程序运行结果:
在main()函数中,经过单步调试可以看到,创建Cat类型对象时候,首先需要找到Cat类的父类对象,即从Cat类寻找其父类Animal类的构造器,最后寻找Animal的父类Biology类的构造器。
找到Biology基类之后,按照下面顺序,执行各自的构造函数
所以,最终的输出结果,如控制台输出所示。
需要注意的是,即使Cat类不创建构造器,编译器会创建默认的构造器。仍然会调用到基类的构造器。输出结果如下: