[英]In Java, is constructor non static?
许多人说Java中的构造函数是非静态的。 要初始化对象,我们需要构造函数。 因此,我们可以使用没有对象的构造函数,然后构造函数必须是静态的。
构造函数有一个实例( this
是可用的)。 因此,根据定义,它不是静态的。
JRE在创建实例后运行构造函数。
好吧,这与“许多人的想法”无关,而与定义有关。 正如Java语言规范所说:
始终针对一个对象调用实例方法 ,该对象成为在方法主体执行期间关键字
this
和super
引用的当前对象。
和
未声明为
static
方法称为实例方法 ,有时称为非静态方法。
由于在构造函数的上下文中具有this
和super
定义,因此必须将构造函数视为非静态方法,但是我理解您的帖子背后的想法,即new
具有一些静态功能:
new
new
不是虚拟的 Java中的构造函数不用于构造对象,而是用于初始化对象。 在实例化构造对象之后,构造函数是JVM运行的第一个方法。
在Java中,构造函数不能为静态或同步的。 一次只能由一个线程构造(创建+初始化)一个对象,并且构造函数在已创建的实例上运行-意味着在非静态上下文中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.