调用构造函数是否意味着创建对象?
当我们创建扩展抽象类的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