Java中基类子对象的构建过程从“基类向外”扩散的如何理解?

来源:互联网 发布:部落冲突金库升级数据 编辑:程序博客网 时间:2024/06/03 23:40

《Java编程思想》复用类一章,提出基类的子对象的构建过程是从基类“向外”进行扩散的。

下面通过实例进行讲解,首先看下面的代码:

import static net.mindview.util.Print.*; //《java编程思想》提供的类库/** * @author Administrator * */public class Cat extends Animal {public Cat() {// TODO Auto-generated constructor stubprint("Caretoon constructor");}public static void main(String[] args) {Cat x = new Cat();}}class Biology {Biology() {// TODO Auto-generated constructor stubprint("Art constructor");}}class Animal extends Biology {Animal() {// TODO Auto-generated constructor stubprint("Drawing constructor");}}

程序运行结果:



在这里共声明了三个类,分别是Biology,  Animal,Cat. 继承关系如下:
在main()函数中,经过单步调试可以看到,创建Cat类型对象时候,首先需要找到Cat类的父类对象,即从Cat类寻找其父类Animal类的构造器,最后寻找Animal的父类Biology类的构造器。
找到Biology基类之后,按照下面顺序,执行各自的构造函数

所以,最终的输出结果,如控制台输出所示。
需要注意的是,即使Cat类不创建构造器,编译器会创建默认的构造器。仍然会调用到基类的构造器。输出结果如下:



原创粉丝点击