Animal(){this(makeRandomName());//QUAL A REAL NECESSIDADE DESTE THIS()????}
vai executar o outro construtor
Animal(Stringname){this.name=name;}
quando vc usar Animal();
ele executa o Animal(makeRandomName());
[]'s
binhole
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.
ganondorfan
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ê).