This

Indice Tutorial

La parola chiave this in Java viene utilizzata per riferirsi, all’interno di un metodo o di un costruttore, agli attributi o metodi locali.

Esempio

public class Prova {
	
	String nome;
    
	public void hello(String n)
	{
		nome = n;// riga 5
this.nome = n;// riga 6
	}
	
}

La riga 5 e la riga 6 sono equivalenti. Il contenuto della variabile n viene salvato nella variabile nome in entrambi i casi.

Ipotizziamo di usare, come nome variabile, “nome” al posto del paramentro in ingresso al metodo (n).

Esempio

public class Prova {
	
	String nome;// riga 2
    
	public void hello(String nome)
	{
		nome = nome;// riga 5
	}
	
}	

In questo caso, l’assegnazione alla riga 5 non produce nessun effetto, un warning di eclipse ci avvisa anche, perché la variabile “nome”, dentro il metodo, si riferisce alla variabile locale nome, cioè a quella data in input al metodo, non alla variabile “nome”, definita alla riga 2.

Bisogna infatti tenere conto che, se una variabile locale ha lo stesso nome di un attributo della classe, nel metodo viene considerata quella locale.

In questi casi, per distinguere tra la variabile del metodo e l’attributo della classe, ci viene in aiuto l’operatore this, che  permette di riferirci agli attributi della classe.

Esempio

public class Prova {
	
	String nome;
    
	public void hello(String nome)
	{
		this.nome = nome;
	}
	
}	

La keyword this è un riferimento interno alla classe stessa. Scrivendo this, seguito dal punto, di fatto si può fare riferimento a una qualsiasi proprietà o metodo della classe.

Esempio

public class Prova {
	
	String nome;
    
	public void hello(String nome)
	{
		this.nome = nome;
	}
	
	public void stampa() {
		
		this.hello("rr");// è equivalente a hello("rr");
		
}

Un altro uso riguarda i costruttori.

Ci si avvale di this() per richiamare un costruttore all’interno di un’altro costruttore.

Esempio

public class Prova {
	
	String nome;
    
	public Prova()
	{
		this.nome = nome;
	}
	
	public Prova(String n) {
		
		this();
		nome = n;
	}
	
	public Prova(String n, int l)
	{
		this(n);
		
	}
	
}

Notare che, se usato come costruttore, this deve essere la prima istruzione.

Esempio

public Prova(String n) {
		nome = n;
		this();// errore di compilazione, this deve essere la prima istruzione
		
	}

Invertendo le due righe il codice funziona

public Prova(String n) {
		
		this();
		nome = n;
	}

Video Lezione Parola Chiave This

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.