Vantagem de usar um construtor que chama outro?

7 respostas
guj1

Pessoal,

Vantagem de usar um construtor que chama outro?
Como nesse exmplo?

public class Carro {
	String modelo;
	int velocidadeMaxima;
	double segundosZeroACem;
	Motor motor;
	
	
	//Construtor padrão de Carro.
	public Carro() {
		
	}
	
	//Construtor que chama outro construtor.
	public Carro(String modelo, int velocidadeMaxima, double segundosDeZeroACem) {
		this(modelo, velocidadeMaxima, segundosDeZeroACem, null);
	}

	//Outro construtor.
	public Carro(String modelo, int velocidadeMaxima, double segundosDeZeroACem, Motor motor) {
		this.modelo = modelo;
		this.segundosZeroACem = segundosDeZeroACem;
		this.velocidadeMaxima = velocidadeMaxima;
		this.motor = motor;
	}
}

7 Respostas

ViniGodoy
  1. Escrever um código só;
  2. Dar ao programador que usa a classe Carro mais de uma opção.
matheuslmota
Reaproveitamento de código. Se você não tivesse chamado o outro construtor, teria que ter feito assim:
public class Carro {
	String modelo;
	int velocidadeMaxima;
	double segundosZeroACem;
	Motor motor;
	
	
	//Construtor padrão de Carro.
	public Carro() {
		
	}
	
	//Construtor que chama outro construtor.
	public Carro(String modelo, int velocidadeMaxima, double segundosDeZeroACem) {
		this.modelo = modelo;
		this.segundosZeroACem = segundosDeZeroACem;
		this.velocidadeMaxima = velocidadeMaxima;
		this.motor = null;
	}

	//Outro construtor.
	public Carro(String modelo, int velocidadeMaxima, double segundosDeZeroACem, Motor motor) {
		this.modelo = modelo;
		this.segundosZeroACem = segundosDeZeroACem;
		this.velocidadeMaxima = velocidadeMaxima;
		this.motor = motor;
	}
}

Isso ajuda a simplificar um pouco o código.

guj1

Então seria assim.

Eu declaro vários construtores e os chamo no construtor “padrão”, assim eu posso chama todos os construtores declarados noconstrutor padrão se eu desejar. Meu pensamento está correto? No caso meu entendimento.

matheuslmota

Veja da seguinte forma. Você pode ter um construtor que recebe 4 parâmetros e ter um que recebe 3. A função do construtor que recebe 3 parâmetros é chamar o que recebe 4 passando um valo padrâo para um dos parâmetros. Isso é o que o seu código faz.

guj1

Ok!
Obrigado pela explicação!
E uma sugestão para o melhoramento do GUJ, seria bom se a galera implementasse algo assim: quando se inicia um novo tópico ou uma resposta, o curso ficasse no local padrão do título ou da resposta. Economizaria um clique. O que acham?
Sabemos que hoje em dia um clique faz tora a diferença :wink:

Grande abraço!

ViniGodoy

Assim como faz o GUJ Perguntas?
http://www.guj.com.br/perguntas

guj1

Isso, eu cliquei em adicionar um omentário e o cursor ficou automaticamente no local para eu escrever o comentário. :slight_smile:

Criado 15 de abril de 2013
Ultima resposta 15 de abr. de 2013
Respostas 7
Participantes 3