I Costruttori In Java

Il costruttore di una classe è un particolare metodo utilizzato per creare una istanza della classe stessa. Per definirlo, è sufficiente creare un metodo con lo stesso nome della classe.

 Ad esempio, se si ha una classe chiamata MyClass, possiamo creare un  costruttore che prende in input una stringa (o che non prenda niente in ingresso o qualsiasi altra variabile o tante variabili o addirittura niente):

// Un altro costruttore
public MyClass(String str) {}

Per usarlo, invocarlo, durante la creazione dobbiamo usare la keyword new:

MyClass r = new MyClass(“ciao”);

Dentro una classe si possono avere più costruttori. Sta a chi programma scegliere, di volta in volta, quale vuole usare. Normalmente il costruttore è definito pubblico, in modo che possa essere utilizzato per creare istanze di oggetti come ad esempio

MyClass mc = new MyClass();

In Java ogni oggetto definito deve obbligatoriamente avere un costruttore; nel caso non lo si definisca esplicitamente, il compilatore, al momento della compilazione, ne inserisce uno vuoto che non riceve parametri in input (detto costruttore di default) e che in questo caso non compie alcuna azione, ma serve solo a creare una istanza della classe.

Nel caso in cui si definisca un proprio costruttore, allora quello di default non esisterà più, e si avrà un errore in esecuzione nel tentativo di invocarlo.

Un costruttore non può restituire nessun valore, dato che implicitamente restituisce un oggetto della classe stessa. Non è proibito dichiarare un metodo che abbia il nome della classe ma che ritorni un valore, come ad esempio

// semplice metodo
public int MyClass() {}

però viene visto come semplice metodo e non come costruttore di classe.

La keyword this, è un riferimento interno alla classe stessa. Scrivendo this() di fatto si chiama un costruttore, ma è possibile fare riferimento a una qualsiasi proprietà o metodo della classe stessa scrivendo  ad esempio:

this.myMethod()

Da notare che, dall’interno di una classe, scrivere

this.myMethod()

oppure direttamente

myMethod()

è del tutto equivalente: il this in genere viene utilizzato per rendere il codice più elegante e comprensibile, o per distinguere tra variabile locale e d’istanza.

Esempio:

public class If1 {
	private int count;
	public If1(int count ) {
		
		this.count = count;
	}

Se non avessi usato la keyword this, l’assegnazione non avrebbe avuto effetto perché era come scrivere:

count (intesa come variabile locale data in ingresso al metodo)  = count (intesa come variabile locale data in ingresso al metodo)  

(Visited 29 times, 1 visits today)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *