Cos'è esattamente un costruttore di default - potete dirmi quale dei seguenti è un costruttore di default e cosa lo differenzia da qualsiasi altro costruttore?
public Module() {
this.name = "";
this.credits = 0;
this.hours = 0;
}
public Module(String name, int credits, int hours) {
this.name = name;
this.credits = credits;
this.hours = hours;
}
Nessuno dei due. Se lo si definisce, non è il default.
Il costruttore predefinito è il costruttore senza argomenti generato automaticamente a meno che non si definisca un altro costruttore. Qualsiasi campo non inizializzato sarà impostato ai suoi valori predefiniti. Per il tuo esempio, sarebbe così assumendo che i tipi siano String
, int
e int
, e che la classe stessa sia pubblica:
public Module()
{
super();
this.name = null;
this.credits = 0;
this.hours = 0;
}
Questo è esattamente lo stesso di
public Module()
{}
Ed è esattamente come non avere alcun costruttore. Tuttavia, se si definisce almeno un costruttore, il costruttore di default non viene generato.
Riferimento: Specifica del linguaggio Java
Se una classe non contiene dichiarazioni di costruttori, allora viene implicitamente dichiarato un costruttore predefinito senza parametri formali e senza clausola throws.
Tecnicamente non è il costruttore (predefinito o meno) che inizializza i campi in modo predefinito. Tuttavia, lascio la risposta perché
Un costruttore di default viene creato se non si definisce alcun costruttore nella propria classe. È semplicemente un costruttore senza argomenti che non fa nulla. Modifica: Eccetto chiamare super()
public Module(){
}