Tenho uma dúvida quando se faz o método get.
O correto não seria usar o this quando quero fazer o retorno?
public String getNome() {
return this.nome;
}public String getNome() {
return nome;
}
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Tenho uma dúvida quando se faz o método get.
O correto não seria usar o this quando quero fazer o retorno?
public String getNome() {
return this.nome;
}public String getNome() {
return nome;
}
Fala Daniel, tudo certo?
A palavra reservada this faz menção ao objeto em questão e é uma boa prática utilizá-la ao referenciar-se ao próprio objeto, como por exemplo quando estamos nos referenciando aos seus atributos dentro de seus métodos, como no caso de Getters e Setters.
No entanto, seu uso é opcional, não sendo obrigatório o uso da referência this quando não há conflito de nomes de variáveis. Como assim?
Dentro do exemplo dado:
public String getNome() {
return nome;
}Onde não fazemos o uso do this, o que acontece é o seguinte: o Java procura por referências com esse nome de variável, e não encontra conflitos, pois há apenas uma variável chamada nome, que é seu atributo! Como há apenas o atributo, ele já sabe do que se trata e usa o valor correto! Em geral, dentro de métodos Getters, dificilmente vai haver algum conflito de nomes e o this é opcional, ainda assim é recomendável o seu uso, para facilitar a leitura do código!
Vamos ver um caso onde há conflito agora:
public String setNome(String nome) {
this.nome = nome;
}Dentro de um método setNome(), onde recebemos uma String nome como parâmetro. Só de olhar já percebemos que temos uma variável local, no parâmetro, com o mesmo nome do atributo da classe, isso é o conflito de nomes. Nesse caso precisamos usar a referência this, senão o Java vai entender que estamos nos referenciando à variável local nome, e o método não vai ter o comportamento desejado.
É importante lembrar, também, que esse conflito só ocorre porque a variável local tem o mesmo nome do atributo, no caso de ser um nome diferente da variável local:
public String setNome(String nomeDiferente) {
nome = nomeDiferente;
}Também vira opcional o uso do this, pois não haverá conflitos! Ainda assim, reforço, é uma boa prática utilizar o this sempre que for cabível, pois facilita a leitura e manutenção do código.
Em caso de dúvidas, estou à disposição!
Um grande abraço e bons estudos!