Comportamiento de los objetos en un Array
Volviendo nuevamente con los Arrays voy a estudiar como se comporta un Array formado por objetos.
Se comportan como cualquier otro objeto (valga la redundancia), la única diferencia es el acceso a dichos objetos.
// Ejemplo
//Declaramos un array que contenga 7 referencias Perro.
Perro [] mascota;
mascota = new Perro [7];
// Creamos dos nuevos objetos Perro y le asignamos los dos primeros elementos del array
mascota [0] = new Perro ();
mascota [1] = new Perro ();
// Podemos llamar los métodos de los objetos creados;
mascota [0]. setAltura (30); //Suponemos que ya hemos definido los getters y setters
int x = mascota [0]. getAltura ();
mascota [1]. setAltura (8);
...
lógicamente, en los espacios de array en los que no hayamos introducido nada no podremos llamar ningún método (lógico, si no hemos metido nada).
mascota [4].setAltura (8)... No funcionará porque no hemos metido un "new Perro()" ahí.
mascota [4].setAltura (8)... No funcionará porque no hemos metido un "new Perro()" ahí.
Valores por defecto
Ya sabemos que una variable necesita al menos un nombre y un tipo y que podemos inicializarla al mismo tiempo que la declaramos.
int altura = 30;
Pero cuando NO inicializamos una variable (no le asignamos un valor) ¿que ocurre cuando llamamos un método getter?. En otras palabras, ¿Cuál es el valor de las variables antes de iniciarlas?
Antes que nada hay que saber que diferenciar 2 tipos de variables. Las "Instance variables" y las "Local variables" .
Instance variables: Son las que hemos visto hasta ahora, las que declaramos antes de comenzar a definir los métodos.
Local variables: Son las que están declaradas e inicializadas al mismo tiempo dentro de un método, es decir...
Ejemplo de Instance variable:
%2B12.43.51.png)
Ejemplo de Local variable:
%2B12.45.21.png)
Es interesante resaltar que la variable (y) y la variable (z) deben ser declaradas he inicializadas antes del método
Vemos como la variable localVariable no está inicializada, por tanto no podemos mostrarla en la consola. Esto ocurre porque cuando java "arranca" un código, "carga" por decirlo así, todas las clases pero NO carga los métodos hasta que sean "llamados" por alguna linea de código. De ahí que las variables que van dentro de un método no tengan un valor predeterminado como lo tienen las instanciadas.
Como he dicho, para las "instance variable" no ocurre así. Los valores que le da java a las diferentes variables según su tipo es el siguiente.
integers = 0
floating points = 0.0
booleans = false
references = null
No hay comentarios:
Publicar un comentario