有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java调用构造函数是否意味着创建实例?

我知道在使用时:

A a = new A();

它在堆中分配一个空间,然后调用构造函数,最后返回引用。 但我对此感到困惑,如果我在另一个构造函数中调用一个构造函数,或者当子构造函数调用它的父构造函数时。这两种方法会创建一系列实例吗?还是一个“新”代表“一个实例”


共 (1) 个答案

  1. # 1 楼答案

    当您在构造函数的第一行写入thissuper时,这会调用另一个构造函数来执行一些初始化工作。它不会创建单独的实例

    因此,如果类A扩展类B,并且A的构造函数调用super(),这意味着为B实例预留的内存空间将有额外的初始化负载;但这是在与A的其他构造函数相同的空间中完成的。所以如果你写A myObject = new A();,步骤是——

    1. 在堆上分配空间
    2. 运行类B(超类)的构造函数
    3. 为类A运行构造函数的其余部分
    4. 将对已创建空间的引用分配给myObject