"Hej, Amigo! Idag kommer Bilaabo att prata om i vilken ordning variabler initieras ."

Föreställ dig att du tittar på någon kod. Vilka värden får variablerna?

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

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

"Är det verkligen tillåtet?"

"Självklart. Ordningen i vilken en klasss medlemsmetoder och fält deklareras är inte viktig. "

En klass laddas uppifrån och ner, så det är viktigt att ett fält bara kommer åt andra fält som redan har laddats. I exemplet kan b komma åt a , men den vet ingenting om c .

"Och vad kommer att hända?"

"När variabler skapas får de standardvärden."

Koda Vad händer egentligen
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;
 }
}

"Heliga moly! Det är så enkelt. Tack, Bilaabo. Du är en riktig vän!"

"Hurra! Bilaabo har en vän!"