1
resposta

Uso de this (atributo1,atributo2,atributo3) no código abaixo, não tenho certeza se compreendi?

Neste caso, para não duplicar as validações dos construtores, o chamamento do construtor foi feito dentro do outro, assim validando os parâmetros antes. Minha dúvida seria, aquele: ' this(2017, modelo, preco);', é a mesma coisa que this.modelo=modelo certo? e quais momentos esse método de atribuição não é muito prático? ou sempre pode ser feito, assim otimizando o código?

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

public Carro(int ano, String modelo, double preco){
    if(ano >= 1891){
        this.ano = ano;
    }else{
        System.out.println("O ano informado está inválido. Por isso usaremos 2017!");
        this.ano = 2017;
    }

    if( modelo != null){
        this.modelo = modelo;
    }else{
        System.out.println("O modelo não foi informado. Por isso usaremos Gol!");
        this.modelo = "Gol";
    }

    if(preco > 0){
        this.preco = preco;
    }else{
        System.out.println("O preço não é válido. Por isso usaremos 40000.0!");
        this.preco = 40000.0;
    }        
}

//Novo construtor AQUI!
public Carro(String modelo, double preco){
    this(2017, modelo, preco);
}

//getters e setters omitidos        

}

1 resposta

Nesse caso o instrutor está usando 2 construtores, um para validar as informações que estamos passando no parametro do construtor, que no caso seria esse.

public Carro(int ano, String modelo, double preco){
    if(ano >= 1891){
        this.ano = ano;
    }else{
        System.out.println("O ano informado está inválido. Por isso usaremos 2017!");
        this.ano = 2017;
    }

    if( modelo != null){
        this.modelo = modelo;
    }else{
        System.out.println("O modelo não foi informado. Por isso usaremos Gol!");
        this.modelo = "Gol";
    }

    if(preco > 0){
        this.preco = preco;
    }else{
        System.out.println("O preço não é válido. Por isso usaremos 40000.0!");
        this.preco = 40000.0;
    }        
}

e o outro seria para chamar esse primeiro construtor, nesse caso quando o instrutor chama a palavra this, no segundo construtor, está referenciando ao primeiro construtor.

public Carro(String modelo, double preco){
    this(2017, modelo, preco);
}

aqui ele ja deixou um valor fixo no ano 2017, ai vc vai passar apenas o modelo, e o preço, ai quando cair no this(2017, modelo, preco); aqui ele está chamando o primeiro construtor com todas as suas validações feitas. a palavra this, serve para referenciar atributos, construtores, da propria classe.