思考与问题
一、思索:为什么子类的构造方法运行之前,必须调用子类的构造方法?能不能反过开?为什么不能反过来?
构造函数的主要作用:在对象编程语言中,一般在定义了一个类型之后,为了能使用它,必须把这个类型具体化,也就是指定为一个具体的对象。而构造函数就是从定义出发,建立与定义相对应的对象。用计算机语言来说,光有定义是不能使用,必须通过构造函数来分配内存空间给可使用的对象。
继承父类, 就获得其成员变量,成员函数的使用。因此需要对这些成员变量做一些初始化工作。这个从逻辑上是应该如此的。父类初始化完成后,再接着初始化本身的成员变量。而编译器,为了防止你遗忘这个逻辑顺序。也许就添加了一个检查规则: 查看子类的构造函数中是否有父类的构造函数。
二、参看ExplorationJDKSource.java示例,此示例中定义了一个类A,它没有任何成员:class A { }
示例直接输出这个类所创建的对象
public static void main(String[] args) {
System.out.println(new A());
}
得到的结果:A@1c5f743
请按照以下步骤进行技术探险:
使用javap –c命令反汇编ExplorationJDKSource.class;
反编译截图如下: