Java Language Costruttore predefinito

Esempio

Il "default" per i costruttori è che non hanno argomenti. Nel caso in cui non si specifica alcun costruttore, il compilatore genererà per te un costruttore predefinito.
Ciò significa che i seguenti due snippet sono semanticamente equivalenti:

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

    }
}

La visibilità del costruttore predefinito è la stessa della visibilità della classe. Quindi un pacchetto definito dalla classe ha un costruttore predefinito privato del pacchetto

Tuttavia, se hai un costruttore non predefinito, il compilatore non genererà per te un costruttore predefinito. Quindi questi non sono equivalenti:

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

Fare attenzione che il costruttore generato non esegue l'inizializzazione non standard. Ciò significa che tutti i campi della classe avranno il loro valore predefinito, a meno che non abbiano un inizializzatore.

public class TestClass {

    private String testData;

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

I costruttori sono chiamati così:

TestClass testClass = new TestClass();