"Xin chào, Amigo! Hôm nay, Bilaabo sẽ nói về thứ tự khởi tạo các biến ."

Hãy tưởng tượng bạn đang xem một số mã. Các giá trị nào các biến nhận được?

Mã số
class Cat
{
 public int a = 5;
 public int b = a + 1;
 public int c = a * b;
}
Mã số
class Cat
{
 public int a = getSum();
 public int b = getSum() - a;
 public int c = getSum() - a - b;

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

"Điều đó có thực sự được phép không?"

"Tất nhiên. Thứ tự khai báo các phương thức và trường thành viên của một lớp không quan trọng. "

Một lớp được tải từ trên xuống dưới, vì vậy điều quan trọng là một trường chỉ truy cập các trường khác đã được tải. Trong ví dụ, b có thể truy cập a , nhưng nó không biết gì về c .

"Và điều gì sẽ xảy ra?"

"Khi các biến được tạo, chúng sẽ nhận các giá trị mặc định."

Mã số Điều gì thực sự xảy ra
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;
 }
}

"Thánh moly! Thật đơn giản. Cảm ơn bạn, Bilaabo. Bạn là một người bạn thực sự!"

"Hoan hô! Bilaabo có một người bạn!"