E ai galera, eu estou lendo um livro e fiquei com dúvidas de como usar o “this()”, o livro está explicando como chamar um construtor sobrecarregado a partir de outro e ele usa esta palavra dentro do construtor.
Eu já usei o this na seguinte situação:
public void setNome(String nome){
this.nome = nome;
}
onde “this.nome” se refere a um atributo da classe.
Se alguém puder me explicar o uso de “this” dentro dos construtores eu ficarei grato, obrigado.
Parte do poder do Java vém do seu dicionário de palavras chave enxuto.
claro que isso trás a consequencia de conhecer o uso dessas palavras nas várias situações.
this sem parentesis refere-se a “este”, ou seja, o proprio objecto que está correndo o codigo do método ou do construtor
this() com parentesis refere-se a “o construtor deste” que não tem paremetros. this(nome) , por exemplo refere-se ao construtor deste que recebe um string como argumento.
Este mecanismo é usado para exactamente encadear a chamada de construtores.
um outro uso semelhante pode ser feito com a palavra super. super.nome seria um atributo da classe mãe e super() seria um construtor da classe mãe. Isto permite encadear construtores quando ha herança de classe (lembrar que constutores não se herdam)
Cara, o melhor forma de explicar eh dar uma olhada no exemplo:
public class Pessoa{
private String nome;
private Integer idade;
private Float altura;
public Pessoa(){
this.altura = 1.68f;
//e outras inicializacoes mais complexas
}
public Pessoa(String nome){
//construtor sem parametros this() para inicializar a altura da pessoa
this();
this.nome = nome;
}
public Pessoa(String nome, Integer idade){
//construtor sem parametros this() para inicializar a altura da pessoa
this();
this.nome = nome;
this.idade = idade;
}
// metodos get e set
}
Aqui estamos supondo que nao tem sentido instanciarmos uma pessoa sem altura, ou seja, quando fazemos new Pessoa(), estamos criando uma pessoa sem nome, sem idade, mas ela sempre tera uma altura e que por padrao serao de 1.68m. Um caso em que acontece isso é quando estamos modelando uma sociedade em que em média a população adulta possui 1.68m, mas nao tem documento de seu nascimento, portanto, nao tem nome tampouco idade.
Espero ter ajudado,
Ate mais