Overload dei costruttori

Come effettuare l’overload dei costruttori nel linguaggio Java

Vorrei parlarvi di un argomento riguardante Java molto importante ma al tempo stesso utilissimo per una risoluzione pratica ed elegante di problemi di qualunque genere. In poche parole introdurrò l’overload dei costruttori. Per capire effettivamente cos’è possiamo pensare direttamente ai metodi. Sappiamo tutti che Java offre l’importantissimo
overloading dei metodi, ossia è perfettamente lecito dichiarare più metodi aventi lo stesso e medesimo nome a patto che essi abbiano numero e tipo di parametri differenti.

Facciamo subito un esempio:

Queste due funzioni hanno lo stesso nome formatString() e ritornano il medesimo tipo di dato String (return .. ), in un qualsiasi linguaggio di programmazione (in diversi non tutti) il compilatore vi segnalerà un errore logico, in Java invece rappresentano due espressioni validissime poichè i due metodi accettano parametri diversi e di conseguenza, dopo aver creato un oggetto object scrivendo object.formatString(ciao,bye) , il compilatore notando i due argomenti di tipo String è a conoscenza di quale metodo usare.

L’overload dei costruttori è più o meno la stessa cosa. Possiamo dichiarare all’interno di una classe molti tipi di costruttori sovraccarichi, aventi stesso nome, ma che accettano parametri diversi e che quindi possono aiutarci ad inizializzare un oggetto a seconda delle nostre esigenze. Infatti i costruttori sovraccarichi risultano una validissima scelta nella creazione di apposite librerie che permettono la creazione di un oggetto nei più svariati modi.

Tutti sappiamo che all’utilizzo dell’operatore new per la creazione di oggetti corrisponde una chiamata ad un costruttore, che esso sia dichiarato o meno (costruttore di default in quel caso). Facciamo subito un pò di pratica. Un costruttore di default della classe Test verrebbe dichiarato nel seguente modo:

Ma come abbiamo scoperto poco prima, l’overloading ci viene in aiuto nelle esigenze in cui dobbiamo creare un oggetto un pò “particolare”, poichè all’interno della stessa classe possiamo dichiarare altri costruttori con numero e tipi di parametri diversi e farli comunicare fra di loro. Esempio di costruttori “comunicanti”

Questo è solo un piccolo esempio che vede l’uso della parole chiave this che mette in una sorta di comunicazione i due costruttori, infatti usando Test object = new Test() inizializzeremo a zero i due valori ed eseguiremo i metodi espressi nel costruttore padre (chiamato padre solo per distinzione dall’altro).

Per far sì che un costruttore richiami all’azione un altro costruttore con this, quest’ultimo deve essere la prima istruzione del costruttore sennò costituirebbe un errore di logica che il compilatore vi segnalerà prontamente. In problematiche differenti potremmo usare il costruttore di default per inizializzare l’oggetto in un certo modo ed eseguire certe operazioni con i metodi, e il costruttore con argomenti per inizializzare l’oggetto in altri modi ed eseguire altri tipi di operazioni.

Un esempio conclusivo chiarirà (si spera!) le idee:

L’argomento dei costruttori sovraccarichi meriterebbe molta più attenzione del dovuto, nonostante questo spero di essere stato il più chiaro possibile nel presentarvi queste piccole nozioni, alla prossima!