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

[Duda] Constructores

Con respecto a este código ejemplo de la clase 6:

public class Carro{
    private int ano;
    private String modelo;
    private double precio;

    public Carro(int ano, String modelo, double precio){
        if(ano >= 1891){
            this.ano = ano;
        }else{
            System.out.println("El año informado no es válido. Por eso usaremos 2017!");
            this.ano = 2017;
        }

        if( modelo != null){
            this.modelo = modelo;
        }else{
            System.out.println("El modelo no fue informado. Por eso usaremos Gol!");
            this.modelo = "Gol";
        }

        if(precio > 0){
            this.precio = precio;
        }else{
            System.out.println("EL precio no es válido. Por eso usaremos 40000.0!");
            this.precio = 40000.0;
        }
    }

    //Nuevo constructor AQUI!
    public Carro(String modelo, double precio){
        this(2017, modelo, precio);
    }

    //getters e setters omitidos

}

Es correcto decir que, de alguna manera están anidados esos métodos constructores y que cuando se instancia un objeto de la clase carro siempre se pasa por ambos constructores, o, ¿solo por uno de los dos? Y si es así, ¿como saber que método constructor se ejecuto?. ¿Esa decisión es basada simplemente por el numero de parámetros que se pasan en la instancia del método?

Y en la parte:

        this(2017, modelo, precio);

¿Solo se esta apuntando al metodo anterior para obtener los parametros restantes o se apunta a otra cosa ?

1 respuesta

Hola Gerardo! Los constructores no están anidados. Esta clase en este caso, posee dos constructores distintos. Cada constructor utiliza una cantidad distinta de parametros. Si tu quisieras instanciar un objeto de esta clase, deberás usar alguno de los constructores respetando los parámetros de dicho constructor. Ahora, ¿Como te das cuenta que constructor se utilizo?. Si tu eres el que instancia el objeto, serás el que decida que constructor utilizar. La particularidad del primer constructor (public Carro(int ano, String modelo, double precio)) es que puedes ingresar el año. Sin embargo, el segundo constructor tendrá el año por defecto = 2017. Por último,** this(2017, modelo, precio);** hace referencia al primer constructor de la clase. Espero haberte sido de ayuda. Saludos.