还有一个类似的问题
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();
}


但是在这些方法中,您仍然必须调用类构造函数。正如我之前演示的那样,这不是静态的。

10-08 20:22