
Originariamente inviata da
andbin
Capisco ma ti assicuro che non è il caso di scoraggiarsi. Basta continuare ed impegnarsi un po' e pian piano avrai le idee più chiare.
Il this usato con le parentesi es. this(); o this( ...argomenti ... ); si può usare come
prima (e solo la prima e basta) istruzione di un costruttore per invocare un altro costruttore della stessa classe.
Lo si fa generalmente per comodità quando c'è già un altro costruttore della classe che fa al caso, magari per passare una parte di dati iniziali o dei valori predefiniti.
Ti faccio un esempio:
codice:
public class Libro {
private String titolo;
private String editore;
public Libro(String titolo, String editore) {
this.titolo = titolo;
this.editore = editore;
}
// altro ....
}
Il costruttore è corretto così. I nomi dei parametri sono gli stessi dei campi. Quindi all'interno del costruttore il nome semplice 'titolo' è il
parametro, NON il campo. Se vuoi accedere al campo lo devi qualificare con this.
Quindi il senso è:
- il valore del parametro titolo lo assegno al campo titolo
- il valore del parametro editore lo assegno al campo editore
Quindi potrei usarlo da qualche altra parte es.
Libro libroJavaIO = new Libro("Java I/O, Second Edition", "O'Reilly Media");
Magari ci possono essere dei casi in cui si vuole creare un oggetto Libro senza dover specificare subito l'editore (che magari si può impostare successivamente tramite un metodo che non ho messo per brevità). Si può aggiungere un costruttore del tipo:
codice:
public Libro(String titolo) {
this(titolo, "Editore sconosciuto");
}
In questo caso sfrutto l'altro costruttore che c'è già, semplicemente passando un valore predefinito per l'editore. Quindi la invocazione
this(titolo, "Editore sconosciuto");
invoca materialmente l'altro costruttore passando a sua volta il parametro titolo e un valore fisso per l'editore.
A quel punto si può usare con es.
Libro libro = new Libro("Java 8");