Costruttori multipli

DOMANDA:

In Java si può chiamare un costruttore da un altro costruttore?


RISPOSTA:

Certamente. In questo post vedremo il modo più elegante per evitare ridondanza di codice e massimizzare la manutenibilità delle nostre classi. Tutto quello che c'è da sapere è la parola chiave this(args) che viene utilizzata per richiamare il costruttore dell'oggetto stesso. Ovviamente args sono gli eventuali parametri da passare al costruttore e che identificano la sua firma.

Il modo migliore è partire dal costruttore con meno argomenti richiamando via via quello più corposo. 


Vediamolo con un esempio (classe Costruttori.java):

package costruttori;

public class Costruttori {
   private int x;
   private int y;
   private int z;

   // primo costruttore
   public Costruttori() {
      this(3); //richiamo il secondo
   }

   // secondo costruttore
   public Costruttori(int x) {
       this(x, 4); //richiamo il terzo
   }

   // terzo costruttore
   public Costruttori(int x, int y) {
      this(x, y, 5); //richiamo quello completo
   }

   // costruttore completo
   public Costruttori(int x, int y, int z) {
      this.x = x;
      this.y = y;
      this.z = z;
   }

   public void stampa() {
      System.out.println("x=" + x + " y=" + y + " z=" + z);
   }
}


E la classe di Test (TestCostruttori.java):

package costruttori;

public class TestCostruttori {

   public static void main(String[] args) {

      // uso il primo costruttore
      Costruttori c = new Costruttori();
      c.stampa();

       // uso il secondo costruttore
       c = new Costruttori(1);
       c.stampa();

       // uso il terzo costruttore
       c = new Costruttori(50, 51);
       c.stampa();

       // uso il costruttore completo
       c = new Costruttori(10, 20, 30);
       c.stampa();
   }
}

L'output della classe di Test sarà:
x=3 y=4 z=5
x=1 y=4 z=5
x=50 y=51 z=5
x=10 y=20 z=30

Come è facile intuire, per effettuare delle modifiche al comportamento del costruttore, basta modificare quello completo dove è racchiusa tutta la logica della costruzione dell'oggetto.

Commenti

Posta un commento

Post popolari in questo blog

Arrotondamento e troncamento in Java

Eclipse: Shortcuts (scorciatoie) da tastiera

Strutture dati: List, Set, Map

Creare un eseguibile Java