Documente Academic
Documente Profesional
Documente Cultură
Constructores
Constructores
Para crear un objeto se utiliza el operador new. La creacin e inicializacin de
un objeto involucra los siguientes pasos:
a) Se aloca espacio para la variable
b) Se aloca espacio para el objeto en la HEAP y se inicializan los atributos con valores por defecto.
c) Se inicializan explcitamente los atributos del objeto.
d) Se ejecuta el constructor (parecido a un mtodo y tiene el mismo nombre de la clase)
f) Se asigna la referencia del nuevo objeto a la variable.
public class Vehiculo {
private String marca;
private double precio;
. . .
}
a)
Objeto Vehiculo
0
null
0
0.0
0
auto
null
Memoria STACK
auto
marca
precio
0x99f311
Memoria STACK
Memoria HEAP
Prof: Laura Fava Jorge Rosso
NO retorna valor
- La expresin new retorna una referencia al objeto creado recientemente, pero el constructor no
retorna un valor.
- Java siempre llama automticamente a un constructor cuando crea un objeto (antes de que el objeto
sea usado). De esta forma la inicializacin del objeto est garantizada.
Algoritmos y Estructuras de Datos 2015 Taller de JAVA
Cuando se compila
public
}
Vehiculo(){
}
Cuando se crea un objeto de la clase Vehiculo, con new Vehiculo(), se invocar el
constructor por defecto, an cuando no se encuentre explcitamente en la clase.
Codificaciones
equivalentes
Sobrecarga de Constructores
Qu pasa si se quiere construir un objeto Vehiculo de distintas maneras?
Se escriben en la clase ms de un constructor
sobrecarga de constructores.
public class Vehiculo {
private String nroPatente=;
private String propietario=SinDueo;
public Vehiculo(){
}
public Vehiculo(String marca){
this.marca = marca;
}
this() y this
this()
Cuando dentro de una clase, hay ms de
un constructor, puede surgir la necesidad
de llamarse entre ellos para evitar duplicar
cdigo. Para hacer esto puede usarse
this(), el cual hace una llamada al
constructor de la misma clase que coincida
con al lista de argumentos.
this
llama?
public class Vehiculo {
private String marca;
private String precio;
. . .
public setMarca(String marca){
this.marca = marca;
}
}
Algoritmos y Estructuras de Datos 2015 Taller de JAVA
Vehiculo a1 =
Vehiculo a2 =
. . .
a1.setMarca(
a2.setMarca(
new Vehiculo();
new Vehiculo();
CITROEN);
HONDA);
a1
a2
Constructor de Vertebrado()
La clase Mamifero
Constructor de Mamfero()
La clase Perro
new Perro()
Estoy listo!
super()
La clase Object
La clase Vertebrado
super()
La clase Mamifero
super()
La clase Perro
new Perro()
super()
Error!!
super()
La clase Object
La clase Vertebrado
La clase Mamifero
super()
new Perro()
La clase Perro
Cmo hacemos?
Desde el constructor de Mamifero se debe invocar a alguno de los constructores
existentes en la superclase Vertebrado usando la palabra clave super() y la lista de
argumentos apropiada.
Algoritmos y Estructuras de Datos 2015 Taller de JAVA
La clase Object
super()
super()
La clase Vertebrado
cantpatas = c;
System.out.println(Constructor de Vertebrado);
}
public void comer(){}
}
super(4)
La clase Mamifero
super()
La clase Perro
Perro p = new Perro()
super() y super
super()
Super() invoca a un constructor de la
superclase y debe estar en la primer lnea
de cdigo del constructor.
JAVA garantiza la correcta creacin de los
objetos ya que los constructores siempre
invocan a los constructores de la
superclase. De esta manera todo objeto
contiene una referencia al objeto de la
superclase habilitando la herencia de
estado y comportamiento.
se invoca al constructor de
Mamifero con
argumento entero.
public Perro(){
super(4);
sonido=new String(guau);
}
. . .
}
super
Todos los mtodos de instancia disponen de la variable super (adems de this), la
cual contiene una referencia al objeto padre. La palabra clave super, permite invocar
desde la subclase un mtodo de la superclase.