Construtores Overloaded, dúvida

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ê).