"Здравей, Амиго! Днес Билаабо ще говори за реда, в който се инициализират променливите ."

Представете си, че гледате няHowъв code. Какви стойности получават променливите?

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

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

— Това наистина ли е позволено?

„Разбира се. Редът, в който се декларират методите и полетата на членовете на класа, не е важен.

Класът се зарежда отгоре надолу, така че е важно едно поле да има достъп само до други полета, които вече са заредени. В примера b има достъп до a , но не знае нищо за c .

— И Howво ще стане?

„Когато се създават променливи, те получават стойности по подразбиране.“

Код Какво наистина се случва
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;
 }
}

„За бога! Толкова е просто. Благодаря ти, Билаабо. Ти си истински приятел!“

„Ура! Билаабо има приятел!“