"Bună, Amigo! Astăzi, Bilaabo va vorbi despre ordinea în care sunt inițializate variabilele ."

Imaginează-ți că te uiți la un cod. Ce valori primesc variabilele?

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

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

"Este chiar permis?"

„Desigur. Ordinea în care sunt declarate metodele și câmpurile membre ale unei clase nu este importantă.

O clasă este încărcată de sus în jos, deci este important ca un câmp să acceseze doar alte câmpuri care au fost deja încărcate. În exemplu, b poate accesa a , dar nu știe nimic despre c .

— Și ce se va întâmpla?

„Când sunt create variabile, ele primesc valori implicite.”

Cod Ce se întâmplă cu adevărat
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;
 }
}

"Holy Moly! Este atât de simplu. Mulțumesc, Bilaabo. Ești un adevărat prieten!"

"Ura! Bilaabo are un prieten!"