Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Diferença pra this. e This()

Galera bom dia!

Alguém pode me explicar qual a diferença entre this. e This()?

1 resposta
solução!

Fala Lenin, tudo certo?

A palavra-chave this faz uma referência ao próprio objeto de chamada. Como assim? Vamos imaginar a classe:

class Pessoa{
  public String nome;

  public Pessoa(String nome){
    this.nome = nome;
  }
}

Uma classe bem simples que representa uma pessoa com um nome apenas. A referência this, chamada no construtor, se refere ao próprio objeto que o chama, e é comumente utilizado para atribuir valores iniciais aos atributos de um objeto, a partir do construtor!

A referência this() é um pouco diferente, pois é uma referência para um construtor da classe. Como assim? Dentro das classes Java podemos ter mais de um construtor, graças a sobrecarga de métodos! Para isso, basta que a assinatura do construtor mude de um para outro, ou seja, que eles recebam parâmetros diferentes. Exemplo na mesma classe pessoa:


class Pessoa{

  public String nome;

  public Pessoa(){
    this("Sem nome");
  }

  public Pessoa(String nome){
    this.nome = nome;
  }

}

Note que temos dois construtores: Um que recebe uma string e faz a atribuição do nome da Pessoa, assim como no exemplo anterior; e outro um tanto quanto diferente, pois ele não recebe nada e chama um this() passando a string "Sem nome". Como fica a execução desses construtores?

class Main {  
  public static void main(String args[]) { 
    Pessoa p = new Pessoa("Arthur");
    System.out.println(p.nome); // Arthur
  } 
}

Nesse caso, estou instanciando uma Pessoa e já passando via parâmetro do construtor o nome "Arthur", e quando imprimimos na tela o valor do nome, ele mostra exatamente esse. Agora chamando o outro construtor:

class Main {  
  public static void main(String args[]) { 
    Pessoa p = new Pessoa();
    System.out.println(p.nome); // Sem nome
  } 
}

Agora, não esotu passando nenhum nome para o construtor, e o que ele faz é internamente entrar naquele construtor sem parâmetros, com a chamada do this(). Dentro dessa chamada, faço uma referência para o outro construtor e passo a String "Sem nome" para a pessoa, que será mostrada na impressão do nome.

Sendo assim, a palavra this é utilizada para fazer referência direta ao objeto em questão, já this() é usado quando queremos fazer referência a um construtor da classe, ou seja, nos possibilita aproveitar código de um construtor em um outro construtor, como mostrado no exemplo!

Em caso de dúvidas, estou à disposição.

Um grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software