  |
L'ordine reciproco delle inizializzazioni è significativo |
In una classe l'ordine non è importante se non in casi ben
precisi. Il primo caso in cui l'ordine è importante è dentro un
metodo. I comandi e le espressioni vengono valutati seguento il loro
ordine, e il flusso varia a secondo di if e while che vengono
incontrati. Questo è abbastanza scontato. Ma c'è un altro caso in
cui l'ordine conta, ed è l'ordine in cui i campi sono ordinati TRA DI
LORO. Per esempio:
class Nums {
int a=1;
int b=a+1; // giusto
int c=d; // sbagliato
int d=0;
}
  |
Le inizializzazioni vengono eseguite in ordine di apparizione |
Tutte le inizializzazioni vengono eseguite nell'ordine in cui
compaiono nel testo di una classe. Non importa se in mezzo ci sono
metodi o costruttori (quelli vengono eseguiti dopo). In una
inizializzazione si possono usare altri campi ma solo se COMPAIONO
DOPO. Nell'esempio io posso inizializzare b usando a perchè il valore
è già noto, ma non posso assegnare d a c perchè ancora non se ne sa
nulla.
|