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

时间:2015-06-29 15:40:56

标签: java constructor

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

5 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

ClassName.memberName/(..)

请参阅好的解释:Java static constructor – Is it really Possible to have them in Java?

答案 2 :(得分:0)

嗯,这不是关于“很多人的想法”,而是关于定义。正如Java Language Specification所说:

  

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

  

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

如果您在构造函数的上下文中定义了thissuper,则必须将构造函数视为非静态方法,但我了解其背后的理念你的帖子new带有一些静态功能:

  • 在准备好实例之前致电new
  • new不是虚拟的

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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