"Ciao, Amigo! Oggi Bilaabo parlerà dell'ordine in cui vengono inizializzate le variabili ."

Immagina di guardare un codice. Quali valori assumono le variabili?

Codice
class Cat
{
 public int a = 5;
 public int b = a + 1;
 public int c = a * b;
}
Codice
class Cat
{
 public int a = getSum();
 public int b = getSum() - a;
 public int c = getSum() - a - b;

 public int getSum()
 {
  return a + b + c;
 }
}

"È davvero permesso?"

"Naturalmente. L'ordine in cui vengono dichiarati i metodi e i campi dei membri di una classe non è importante. "

Una classe viene caricata dall'alto verso il basso, quindi è importante che un campo acceda solo ad altri campi che sono già stati caricati. Nell'esempio, b può accedere a a , ma non sa nulla di c .

"E cosa succederà?"

"Quando le variabili vengono create, ottengono valori predefiniti."

Codice Cosa succede davvero
class Cat
{
 public int a = 5;
 public int b = a + 1;
 public int c = a * b;
}
class Cat
{
 public int a = 0;
 public int b = 0;
 public int c = 0;

 public Cat()
 {
  super();

  a = 5;
  b = a + 1; //5+1 = 6
  c = a * b; //5*6 = 30
 }
}
class Cat
{
 public int a = getSum();
 public int b = getSum() - a;
 public int c = getSum() - a - b;

 public getSum()
 {
  return a + b + c;
 }
}
class Cat
{
 public int a = 0;
 public int b = 0;
 public int c = 0;

 public Cat()
 {
  super();

  a = getSum(); //(a+b+c)=0
  b = getSum() - a; //(a+b+c)-a=b=0
  c = getSum() - a - b; //(a+b+c)-a-b=c=0
 }

 public getSum()
 {
  return a + b + c;
 }
}

"Santo cielo! È così semplice. Grazie, Bilaabo. Sei un vero amico!"

"Evviva! Bilaabo ha un amico!"