LEZIONE
DUE: Uso della parola chiave This
This è
una parola chiave il cui uso serve a riferirsi all'oggetto. Per
capire ciò che significa vediamo due esempi del suo uso tamarro:
- Può
essere usata in un costruttore per chiamare un altro costruttore.
Sempre come prima istruzione del costruttore. Esempio:
//definizione della classe
..
..
Body(int a) { //
idNum=a;
}
Body() {
this(3);
}
In questo caso,
supponiamo che il primo costruttore chiamato sia Body(). Ad esempio
potevamo aver avuto la chiamata
Body nuovoPianeta= new Body();
Quando sarà
chiamato il metodo new esso farà si che sia allocato l'oggetto
del tipo di quella classe e chiamerà il costruttore Body().
All'interno del costruttore Body() troviamo la chiamata a this(3).
Essa si riferirà ad un altro costruttore i cui parametri
sono dati da un intero. Questo intero sarà portato nel nuovo
costruttore e assegnato ad idNum.
- Un altro possibile
uso di this è per riferirsi all'oggetto in uso. Exemplo:
public void move(double x, double y)
{
this.x=x;
this.y=y;
}
In questo caso
l'uso di this ci rende sicuri del fatto che la variabile di istanza
di nome x e quella di nome y modificate siano proprio quelle dell'oggetto
a cui ci si è riferiti chiamando il metodo move. Insomma,
chi spaccimm, per chiamare un metodo abbiamo dovuto aver bisogno
di farcelo far usare da uno spaccimma di oggetto? Bene! Ora potrebbe
capitare, per qualche caso assurdo che ci siano altre variabili
x e y nel processo di computazione! E potrebbe capitare che le variabili
aggiornate non saranno quelle dell'oggetto a cui abbiamo chiesto
di compiere una data operazione. Ecco, per essere sicuri di questo
si usa this.x cioè assegna al campo x dell'oggetto this,
cioé quello in uso, il valore che ti sto dando.
Exemplo:
public class firstJava {
public static void main (String args[]) {
System.out.println("Hello World!");
int UnNumero=10;
System.out.println(" il numero è " + UnNumero);
Body nuovo = new Body();
nuovo.idNum = Body.nextID++;
nuovo.nameFor="New Planet";
}
}
class Body {
public long idNum;
public String nameFor;
public Body ruotaIntornoA;
public static long nextID=0;
Body () {
this("planetum");
System.out.println("Setto il nome del nuovo pianeta a planet
");
this.nameFor="planet";
this.ruotaIntornoA=this;/*Il pianeta ruota intorno a se stesso*/
System.out.println("Il pianeta ruota intorno a se stesso");
}
Body(String nome){
//this();
this.nameFor=nome;
System.out.println("Il nuovo nome del pianeta è "
+ this.nameFor);
}
protected void stampa () {
System.out.println("Chi spaccim next Id è" + nextID);
}
}
Questo esempio può essere mandato
in esecuzione e mostra chiaramente gli usi della parola chiave this.
|