Construtores Overloaded, dúvida

3 respostas
V

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;
}

}

3 Respostas

duduribeiro

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

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

Criado 21 de junho de 2011
Ultima resposta 7 de jul. de 2011
Respostas 3
Participantes 4