CodeGym /Cursos /All lectures for ES purposes /Orden de inicialización de variables

Orden de inicialización de variables

All lectures for ES purposes
Nivel 1 , Lección 136
Disponible

"¡Hola, Amigo! Hoy, Bilaabo hablará sobre el orden en que se inicializan las variables ".

Imagina que estás mirando algún código. ¿Qué valores obtienen las variables?

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

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

"¿Eso está realmente permitido?"

"Por supuesto. El orden en que se declaran los métodos y campos miembros de una clase no es importante " .

Una clase se carga de arriba a abajo, por lo que es importante que un campo solo acceda a otros campos que ya se hayan cargado. En el ejemplo, b puede acceder a a , pero no sabe nada sobre c .

"¿Y qué pasará?"

"Cuando se crean variables, obtienen valores predeterminados".

Código lo que realmente sucede
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;
 }
}

"¡Santo cielo! Es tan simple. Gracias, Bilaabo. ¡Eres un verdadero amigo!"

"¡Hurra! ¡Bilaabo tiene un amigo!"

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION