还有一个类似的问题
Constructor is static or non static
但是很少有答案说构造函数是静态的,很少有人说构造函数是非静态的。这很混乱。那么,谁能澄清构造函数是静态的还是非静态的?
最佳答案
我不确定哪个答案让您感到困惑。但是在Java中,构造函数不是静态的。
请参见以下示例:
public class MyTest {
public static void main(String[] args) {
new Test(); // Prints reference within the constructor
new Test(); // The reference is different here
}
}
class Test {
public Test() {
System.out.println(this.toString());
}
}
如您所见,通过两次调用构造函数,可以得到对该对象的两个不同引用。这意味着构造函数的上下文不是静态的。
您的类中可能有工厂方法,这些方法是静态的并创建实例:
班级考试{
// May be called like Test.create() and returns instance
public static Test create() {
return new Test();
}
但是在这些方法中,您仍然必须调用类构造函数。正如我之前演示的那样,这不是静态的。