思考与问题

一、思索:为什么子类的构造方法运行之前,必须调用子类的构造方法?能不能反过开?为什么不能反过来?

构造函数的主要作用:在对象编程语言中,一般在定义了一个类型之后,为了能使用它,必须把这个类型具体化,也就是指定为一个具体的对象。而构造函数就是从定义出发,建立与定义相对应的对象。用计算机语言来说,光有定义是不能使用,必须通过构造函数来分配内存空间给可使用的对象。

继承父类, 就获得其成员变量,成员函数的使用。因此需要对这些成员变量做一些初始化工作。这个从逻辑上是应该如此的。父类初始化完成后,再接着初始化本身的成员变量。而编译器,为了防止你遗忘这个逻辑顺序。也许就添加了一个检查规则: 查看子类的构造函数中是否有父类的构造函数。

二、参看ExplorationJDKSource.java示例,此示例中定义了一个类A,它没有任何成员:class A { }

示例直接输出这个类所创建的对象

public static void main(String[] args)    {

System.out.println(new A());

}

得到的结果:A@1c5f743

请按照以下步骤进行技术探险:

使用javap c命令反汇编ExplorationJDKSource.class

 

反编译截图如下:

 

原文地址:https://www.cnblogs.com/huangliping/p/4950928.html