Galera bom dia!
Alguém pode me explicar qual a diferença entre this. e This()?
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!
Galera bom dia!
Alguém pode me explicar qual a diferença entre this. e This()?
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!