繁体   English   中英

在Java中,构造函数是否为非静态的?

[英]In Java, is constructor non static?

许多人说Java中的构造函数是非静态的。 要初始化对象,我们需要构造函数。 因此,我们可以使用没有对象的构造函数,然后构造函数必须是静态的。

构造函数有一个实例( this是可用的)。 因此,根据定义,它不是静态的。

JRE在创建实例后运行构造函数。

静态成员应使用类名调用 ,而无需创建类的实例,如

ClassName.memberName/(..)

看到很好的解释: Java静态构造函数–是否真的可以在Java中使用它们?

好吧,这与“许多人的想法”无关,而与定义有关。 正如Java语言规范所说:

始终针对一个对象调用实例方法 ,该对象成为在方法主体执行期间关键字thissuper引用的当前对象。

未声明为static方法称为实例方法 ,有时称为非静态方法。

由于在构造函数的上下文中具有thissuper定义,因此必须将构造函数视为非静态方法,但是我理解您的帖子背后的想法,即new具有一些静态功能:

  • 准备好实例之前先调用new
  • new不是虚拟的

Java中的构造函数不用于构造对象,而是用于初始化对象。 在实例化构造对象之后,构造函数是JVM运行的第一个方法。

在Java中,构造函数不能为静态或同步的。 一次只能由一个线程构造(创建+初始化)一个对象,并且构造函数在已创建的实例上运行-意味着在非静态上下文中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM