Sobrecargar un constructor significa escribir versiones múltiples del constructor de una clase, cada uno de ellos con una lista diferente de argumentos, algo parecido a lo que se muestra a continuación:
class Animal{
Animal(){}
Animal(String nombre){}
Animal(String nombre, int edad){}
}
En la clase anterior (la clase Animal) podemos identificar que existen 3 constructores sobrecargados, uno que toma una cadena como argumento, otro que toma una cadena y un entero y otro sin argumentos. Debido a que el constructor sin argumentos actualmente no contiene código es igual al constructor por defecto que provee el compilador de forma automática, pero debido a que ya existe otro u otros constructores en la clase, el compilador no agregará un constructor por defecto de manera automática.
Sobrecargar un constructor es típicamente utilizado para proveer a los clientes formas alternas de instanciar objetos de la clase. Por ejemplo, si el cliente sabe el nombre del Animal, puede pasarlo como argumento por medio del constructor que toma una cadena pero no si lo sabe puede crear el objeto Animal utilizando el constructor sin argumentos.
Si existen diversos constructores para una clase debemos de tomar en cuenta que lo que determina qué constructor se llamará una vez que se crea el objeto o se utiliza la palabra clave 'new' es precisamente los argumentos que pasamos, por ello, no pueden existir múltiples constructores con la misma lista de argumentos.
Otro punto a tomar en cuenta (que ya he mencionado en el artículo anterior sobre constructores) es que un constructor nunca NUNCA podrá devolver nada, ni siquiera void, si se llega a encontrar algo como esto...
class Animal {
void Animal(){} //No es un constructor, es un método
Animal(String nombre){} //Constructor!
}
...estamos hablando de un método que tiene el mismo nombre de la clase que devuelve un valor tipo void y de un constructor que acepta como argumento un valor tipo cadena.
Hasta aquí llegamos con constructores sobrecargados. Alguna duda o algo qué decir? Deja tu comentario. Saludox.
esta muy bueno el blog me estay salvando pa un certsmen pero mortal....vale compare xd
ResponderBorrarjjaa yo denuevo¿ pero al sobrecargar un constructor, como sabe el programa cual necesitara el usuario...?
ResponderBorrarSi existen diversos constructores para una clase debemos de tomar en cuenta que lo que determina qué constructor se llamará es precisamente los argumentos que pasamos al momento de crear el objeto. La JVM no elige cuál es el indicado, lo hacemos nosotros al mandarlo llamar.
ResponderBorraramigo tengo un ejercicio.... al que no le entiendo muy bien al enunciado... pero el chiste que me dice que declare dos constructores... uno sin argumentos y otro que reciba los datos... es esto correcto???:
ResponderBorrarpublic Libro(){
}
public Libro(String titulo, String autor, String editorial, int cantidad, float precio){
this.titulo=titulo;
this.autor=autor;
this.editorial=editorial;
this.cantidad=cantidad;
this.precio=precio;
}
otra forma no se me ocurrió... solo quiero saber si esa es la idea :S
Anónimo:
ResponderBorrarAgregaste los dos constructores de forma correcta, solo un comentario, cuando agregues un constructor sin código no necesitas indicarlo ya que la JVM los coloca por default asi que está de más, a menos que, coloques código dentro del constructor sin parametros
la verdad me sacaste de una buena duda gracias.....
ResponderBorrarson muy basicos tus ejemplos por fabor pon mas directo el asunto de sobrecargar e inicializar un constructor,nose xq haces tanta vuelta, si ......................
ResponderBorrar