預設建構函式

建構函式的預設是它們沒有任何引數。如果你未指定任何建構函式,編譯器將為你生成預設建構函式。
這意味著以下兩個片段在語義上是等效的:

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();