Alguem poderia explanar melhor a idéia do uso do super() e this() dentro dos contrutores??. principalmente o uso do this()
Ex.
public class Animal {
String name;
Animal(String name){
this.name = name;
}
Animal (){
this(makeRandomName()); //QUAL A REAL NECESSIDADE DESTE THIS()????
}
static String makeRandomName(){
int x = (int ) (Math.random()*5);
String name = new String[] { "luffy", "Fido",
"Rover", "Spike","Gigi"}[x];
return name;
}
}
esse construtor
Animal (){
this(makeRandomName()); //QUAL A REAL NECESSIDADE DESTE THIS()????
}
vai executar o outro construtor
Animal(String name){
this.name = name;
}
quando vc usar Animal();
ele executa o Animal(makeRandomName());
[]'s
O método this dentro do contrutor padrão neste contexto chama o proprio construtor alternativo da classe Animal(String name), passando o retorno da string que o método makeRandonName() passa em seu método.
O importante é saber que o this sempre fará referência aos membros da classe que ele faz parte.
Já o super será util quando precisar chamar a partir de uma subclasse algum membro da sua superclasse, ou seja somente quando for aplicado o conceito de herança entre as mesmas.
Espero ter ajudado.
Quando você usa o this dentro do construtor (você só pode usar o this ou super, nunca os dois ao mesmo tempo), você está na verdade passando a bola pra outro construtor da mesma classe, que por sua vez pode ou chamar this novamente ou chamar super, para que a hierarquia de classes façam suas construções.
Basicamente alguem sempre chamará super, mesmo que no seu codigo não haja super (o compilador escreve o super pra você).