Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] Constructores

Buen día Diego, ¿cómo estas? estoy practicado y realizando ejercicios con java OO, mi consulta es que en algunos items pide lo siguiente: *Constructor por defecto, *Constructor con todos los parámetros, *Constructor copia, *Un constructor con todos los atributos como parámetro. Si bien observando las soluciones me queda mas claro aun no entiendo conceptualmente la diferencia. En clases se dieron los constructores vacíos y los personalizados. Agradecería tu respuesta. Saludos.-

1 respuesta

¡Hola Alumno! Espero te encuentres bien.

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.

Entonces, dependiendo de nuestra necesidades de creación de objetos, debemos tener los constructorres correctos definidos en nuestras clases. Si tienes más dudas, déjalas por aquí y lo vamos aclarando todo poco a poco.