Eu entendi onde usar o this. Mas para que serve mesmo ele? Se não usar pode da algum problema?
Eu entendi onde usar o this. Mas para que serve mesmo ele? Se não usar pode da algum problema?
Fala Henrique, beleza? Utilizamos o this
quando queremos deixar explícito ou utilizar algo da classe atual, portanto, o this
se refere a própria classe.
No construtor por exemplo:
public class Pessoa {
private String nome;
private Integer idade;
public Pessoa(String nome, Integer idade) {
this.nome = nome;
this.idade = idade;
}
}
Veja que utilizamos o this
, isso porque queremos passar o valor recebido de nosso construtor para o atributo de classe, se por um acaso fizermos:
public class Pessoa {
private String nome;
private Integer idade;
public Pessoa(String nome, Integer idade) {
nome = nome;
idade = idade;
}
}
Estamos apenas retribuindo o valor para o próprio parâmetro.
O mesmo vale para outros métodos:
public class Pessoa {
public void chamaOutroMetodo() {
system.out.println("Chamei outro método");
}
public void algumMetodo() {
chamaOutroMetodo();
}
}
Não é necessário por o this
, fica á seu critério, eu geralmente gosto de deixar explícito que o método é da própria classe, porque senão, pode ser que esteja sendo chamado de uma classe mãe por exemplo.
Espero ter ajudado.
Olá Henrique,
Esse exemplo abaixo escrevi em C#, mas como pode ver é bem semelhante ao Java. O que vai acontecer aí de errado sem o uso do this é que ao chamar o método Soma e passar o valor não estará somando ao atributo 'valor' da classe e sim ao próprio 'valor' que esta sendo passado por parâmetro. Isso ocorre pelo fato do parâmetro possuir o mesmo nome do atributo, e devido a algumas regras de contexto das variaveis isso acabo ocorrendo. Devido a isso a saída ao invés de ser 10, será 0.
plass Classe
{
public double valor { get; set; }
public void Soma(double valor)
{
valor += valor;
}
}
class Program
{
static void Main(string[] args)
{
var classe = new Classe();
classe.Soma(10);
}
}
Espero ter ajudado, abs.
O this é uma keyword pra referenciar membros de classe. No exemplo abaixo se não tivesse o this ficaria nome=nome , neste caso não saberíamos qual é o atributo da classe Pessoa e qual é o atributo do método construtor. Com o this podemos referenciar um objeto e até mesmo um metodo dependendo de contexto.
class Pessoa{
//atributos da classe
private String nome;
private int cpf;
private String email;
//construtor
public Pessoa( String nome, int cpf, String email){
this.nome = nome;
this.cpf=cpf;
this.email=email;
}
}