调用构造函数是否意味着创建对象?

当我们创建扩展抽象类的Subclass对象时,抽象类构造函数也会运行。但是我们知道我们不能创建抽象类的对象。因此,这是否意味着即使构造函数无任何例外地完成运行,也不能保证是否创建了对象吗?

回答:

因此,这是否意味着即使构造函数无任何例外地完成运行,也不能保证是否创建了对象吗?

简而言之,a constructor不会创建对象。它只是 初始化 对象的 状态new创建对象的是操作员。现在,让我们详细了解一下。

当使用如下语句创建对象时:

new MyClass();

该对象首先由new操作员创建。在返回对新创建对象的引用作为结果之前,处理了所指示的构造函数以初始化新对象。


现在,当您这样做时,请考虑Abstract class和具体的情况SubClass

AbstractClass obj = new ConcreteClass();

new运算符创建一个对象ConcreteClass,并调用其构造函数以初始化创建对象的状态。在此过程中,还从ConcreteClass构造函数中调用抽象类的构造函数,以初始化抽象类中对象的状态。

因此,基本上AbstractClass不创建对象。只是它的构造函数被调用来初始化对象的状态。

  • 该对象是由new运算符创建的,而不是由构造函数本身的调用创建的。 因此,在 调用 了对象。

  • 构造函数仅用于初始化创建对象的状态。它本身不会创建对象。

  • 对象状态也可以包含在抽象超类中。

  • 因此,调用Abstract class构造函数的目的仅仅是完全初始化对象,而不会在过程中创建任何对象。

  • 创建新的类实例-JLS-Section#12.5

以上是 调用构造函数是否意味着创建对象? 的全部内容, 来源链接: utcz.com/qa/413531.html

回到顶部