Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Uso do this

Eu entendi onde usar o this. Mas para que serve mesmo ele? Se não usar pode da algum problema?

3 respostas
solução!

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;
}
 }