"Hallo, Amigo! Vandaag zal Bilaabo het hebben over de volgorde waarin variabelen worden geïnitialiseerd ."

Stel je voor dat je naar een code kijkt. Welke waarden krijgen de variabelen?

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

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

"Mag dat echt?"

"Natuurlijk. De volgorde waarin de lidmethoden en velden van een klasse worden gedeclareerd, is niet belangrijk. "

Een klasse wordt van boven naar beneden geladen, dus het is belangrijk dat een veld alleen toegang heeft tot andere velden die al zijn geladen. In het voorbeeld heeft b toegang tot a , maar het weet niets over c .

"En wat zal er gebeuren?"

"Wanneer variabelen worden gemaakt, krijgen ze standaardwaarden."

Code Wat gebeurt er echt
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! Het is zo simpel. Dank je, Bilaabo. Je bent een echte vriend!"

"Hoera! Bilaabo heeft een vriend!"