(RESPONDIDO) Qual a forma mais recomendada para atribuir valores as variáveis em um construtor

Ola

Qual a forma mais recomendada para atribuir valores as variáveis em um construtor?

Usando o this.


public class Contato {
	
	private String nome;
	
	public Contato(String nome){
		this.nome = nome;
	}
	
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}
}

Ou usando os acessores:


public class Contato {
	
	private String nome;
	
	public Contato(String nome){
		this.setNome(nome);
	}
	
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}
}

Agradeço a opinião de todos

[quote=NewScript]Ola

Qual a forma mais recomendada para atribuir valores as variáveis em um construtor?

Usando o this.


public class Contato {
	
	private String nome;
	
	public Contato(String nome){
		this.nome = nome;
	}
	
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}
}

Ou usando os acessores:


public class Contato {
	
	private String nome;
	
	public Contato(String nome){
		this.setNome(nome);
	}
	
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}
}

Agradeço a opinião de todos[/quote]

Quando chamar os teus “setters”, eles farão exatamente a mesma coisa, ou seja “this.variavel”.
Caso você use alguma lógica no seu getter ou setter, ai sim, chame ele. Apenas atribuir valor não há necessidade.

deve usar o this sempre que a classe não for final, pois se o setter for alterado podera alterar o funcionamento do contrutor e da classe inteira podendo fazer com que a classe gere erros.

No construtor utilize this

O motivo? Simples! A propriedade private permite que classes externas na sua aplicação possam ter acesso ao valor da variável, mas não modifica-lo diretamente. O this faz a referência que é o parâmetro da classe, e não o do método que você está atribuindo algum valor. Dado isso, os métodos acabam por ser públicos (ou não) justamente para adequação desta situação.

Mais informações pode ser encontradas, aqui mesmo no fórum.

Abs!

Se o seu setter apenas atribuir valor compensa usar apenas this.

Obrigado a todos.

Só para complementar a questão:

É ilógico da minha parte pensar que provavelmente, num futuro, eu venha a querer validar
certos dados (no caso, o nome) e por isso logo de cara já usar setter? Ou é melhor fazer
isso apenas quando necessário?

Cara, vai depender muito do que você quer fazer. Eu particularmente gosto de inicializar um atributo no construtor usando o seu set, pois sempre ja trato algumas exceções e possíveis erro logo de cara. Mas, por exemplo, quando o problema for apenas para fins algorítmicos, ou seja, apenas para se obter uma simples resposta, eu inicializo direto no atributo, usando “this” ou não.