— Привіт, Аміго! З цієї лекції ти дізнаєшся більше про порядок ініціалізації змінних.

Уяви, що ти бачиш код. Які значення отримають змінні?

Код
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.

— І що ж буде?

— Коли змінні створюються, вони набувають дефолтних значень (значення за замовчуванням).

Код Що відбувається насправді
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 int 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 int getSum()
 {
  return a + b + c;
 }
}

— Овва! Виявляється, це так просто. Дякую, Дієго, ти – справжній друг!