默认构造函数

构造函数的默认是它们没有任何参数。如果你未指定任何构造函数,编译器将为你生成默认构造函数。
这意味着以下两个片段在语义上是等效的:

public class TestClass {
    private String test;
}
public class TestClass {
    private String test;
    public TestClass() {

    }
}

默认构造函数的可见性与类的可见性相同。因此,一个类定义的包私有地具有包私有默认构造函数

但是,如果你有非默认构造函数,编译器将不会为你生成默认构造函数。所以这些不等同于:

public class TestClass {
    private String test;
    public TestClass(String arg) {
    }
}
public class TestClass {
    private String test;
    public TestClass() {
    }
    public TestClass(String arg) {
    }
}

请注意,生成的构造函数不执行非标准初始化。这意味着你的类的所有字段都将具有其默认值,除非它们具有初始值设定项。

public class TestClass {

    private String testData;

    public TestClass() {
        testData = "Test"
    }
}

构造函数的调用方式如下:

TestClass testClass = new TestClass();