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
}