Na verdade o reaproveitamento do construtor é na mesma classe. A ideia é, se estamos duplicando código no construtor(que é o caso das validações) possamos reaproveitar usando o this(), se fosse chamar o contrutor da classe pai seria super().
Ou seja, temos 2 construtores, um com 3 parâmetro, que tem todas validações e outro com 2 parâmetros que internamente chama o construtor com 3 parâmetro e com o atributo ano fixo com o valor 2017.
Dessa forma podemos criar o objeto Carro chamando o construtor com 3 parâmetros:
Carro carro = new Carro(2013, "Gol", 35000.0);
Isso vai criar: "Carro [ano=2013, modelo=Gol, preco=35000.0]"
Ou criar o objeto Carro chamando o construtor com 2 parâmetros:
Carro outroCarro = new Carro("Civic", 95000.0);
Isso vai criar: "Carro [ano=2017, modelo=Civic, preco=95000.0]"