Buenas tardes, no entendi muy bien el porque se uso 2 constructores, ya que con 1 andaba bien y creo que no habia necesidad de hacer otro. Esa seria mi duda. Gracias
Buenas tardes, no entendi muy bien el porque se uso 2 constructores, ya que con 1 andaba bien y creo que no habia necesidad de hacer otro. Esa seria mi duda. Gracias
¡Hola Santino! Espero te encuentres bien.
Antes de darte la respuesta, creo que es imperativo comprender mejor la relación que existe entre un constructor y la construcción de un objeto.
Tomemos el siguiente ejemplo. Digamos que tenemos la siguiente clase y su constructor vacío:
public class Animal{
String especie;
int edad;
public Animal(){ // Constructor vacío de la clase Animal
}
public void setEspecie(String especie){
this.especie = especie;
}
public void setEdad(int edad){
this.edad = edad;
}
}
Ahora que vimos la clase Animal, imaginemos que en otra clase vamos a instanciar un objeto de tipo Animal:
Animal gato = new Animal(); // Se instancia un objeto de la clase Animal
gato.setEspecie("Gato");
gato.setEdad(5);
Pues ya está, pudimos instanciar el objeto, y además hemos definido la especie y la edad del animal en dos líneas consecutivas. Pero... ¿No sería mejor poder definir la especie y la edad inmediatamente al momento de construir el objeto? No podemos, no podemos porque no existe un constructor que lo permita.
El constructor de la clase Animal es un constructor vacío, por lo tanto a la hora de construir un objeto de dicha clase no tenemos más remedio que crear el objeto vacío y luego, después, ya podemos definirle atributos.
¿Entonces, qué podemos hacer? Pues, creamos otro constructor, de esta manera:
public class Animal{
String especie;
int edad;
public Animal(){ // Constructor vacío de la clase Animal
}
public Animal(String especie, int edad){
this.especie = especie;
this.edad = edad;
}
public void setEspecie(String especie){
this.especie = especie;
}
public void setEdad(int edad){
this.edad = edad;
}
}
Y ya está, ahora tenemos 2 constructores y podemos crear un objeto de la clase Animal en la que definiremos de inmediato sus atributos, de esta manera:
Animal Perro = new Animal(Perro, 10);
Entonces mi objeto Perro, tiene especie Perro y 10 años de edad.