Scusate la domanda forse un po troppo banale:
Quando io scrivo this.nomevariabile cosa specifico? perchè a volte funziona anche sia che lo scrivo o no?
Lo posso usare solo su variabili o anche su istanze di oggetti?
Scusate la domanda forse un po troppo banale:
Quando io scrivo this.nomevariabile cosa specifico? perchè a volte funziona anche sia che lo scrivo o no?
Lo posso usare solo su variabili o anche su istanze di oggetti?
-- utente Kubuntu --
con this.nomevariabile richiami una variabile della classe e viene utilizzato quando ci si trova in situazioni che possono portare in confusione il compilatore
Es.
//Variabili di classe
int pippo=4;
...
...
public void copia(int pippo){
//se tu facessi
pippo=pippo;
//non faresti altro che riassegnare il parametro
//passato pippo con se stesso , in quanto
//il parametro nell'area del metodo
//oscura la variabile di classe che ha lo stesso nome
//quindi per evitare ciò si usa
this.pippo=pippo;
//cioè this.pippo indica al compilatore di andare a prendere
//la variabile della classe pippo e non usare il parametro //pippo
}
Ciauz
Lang=Java
Ambiente = Eclipse forever
Ubuntu & Win XP Pro
Grazie zero-2
quindi ricapitolando con this.pippo vado a richiamare la variabile della classe int pippo=4; e la tengo distinta dal pippo del metodo, anche se hannolo stesso nome.
-- utente Kubuntu --
si può usare anke su istanze di oggetti....
quando tu hai più costruttori, utilizzando this puoi richiamarne un altro. x esempio:
in questo modo usando this nel costruttore per default (che ti consiglio di implementarlo SEMPRE se la classe non è final) richiami un altro costruttore della stessa classe.codice:public class prova { private String s; private int a; public prova (int k) { ... } public prova () { this(0); } . . . // resto della classe . . . }
ciauz!
UAU! Grazie Storm, quindi in quel caso con this(0) quando uso il costruttore senza dargli parametri è come se gli dessi k=0
Molto comodo
-- utente Kubuntu --
esattamente!
ah...un'altra cosa ke magari può servirti per i costruttori (nn arrabbiarti se la sai già). supponi di avere una cosa del genere:
se la classe madre "class1" non possiede un costruttore senza parametri questa cosa non ti verrà mai compilata perchè la subclasse non riesce a trovare un costruttore implicito nella classe madre.codice:public class class2 extends class1 { private String a; public class2 (String a) { this.a = a; } . . . // resto della classe. . . }
x quello ti consigliavo di mettere sempre un costruttore di default nelle classi non final (cioè estendibili).
ciauz!
Grazie Storm, questa cosa proprio non la sapevo :adhone:
-- utente Kubuntu --