Bom dia! Tudo bem?
Quando uso esse código abaixo e chamo o Construtor Carro(String modelo, double preco) quer dizer que sempre transformará em Carro(2017, String modelo, double preco)?
Outra dúvida ele chama o Construtor Carro(int ano, String modelo, double preco) porque chamei this(int ano, String modelo, double preco), correto?
Nunca poderei ter dois Construtor com os mesmo campos, correto? Ele sobre-escreve de cima para baixo?
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        
} 
            