Dúvida construtor

4 respostas
M

Minha dúvida é porque quando executo o código abaixo o construtor de string é chamado ? Alguém pode me dizer ?

Segue a classe de teste abaixo.

public class Teste {

public Teste(){
	System.out.println("Construtor vazio");
}

public Teste(String s){
	System.out.println("Construtor string");
}

public Teste(Object o){
	System.out.println("Construtor object");
}

public static void main(String[] args) {
	Teste t = new Teste(null);
}

}

4 Respostas

D

Me corrijam se eu estiver errado, mas implementar isto:

Teste t = new Teste(null);

equivale a implementar isto:

Teste t = new Teste();

Portanto, o construtor (default) é invocado.

Tks =)

M

Pois é… eu pensei isso também… mas tente rodar o código

Se tiver só o construtor padrao e um construtor String ou Object é chamado um dos dois (String ou Object)

Se tiver só o construtor padrão dá erro de compilação.

Eu queria entender isso !

Deh

pelo que eu sei…

new Teste(null); e new Teste();

são diferentes…

quando você dá o new Teste(null); ele tenta pegar a menor refêrencia possivel, no caso Object > String, logo ele pega String…

public class Teste {

	public Teste(){
		System.out.println("Construtor vazio");
	}


	public Teste(Integer x){
		System.out.println("Construtor object");
	}
	public Teste(long x){
		System.out.println("longgg");
	}

	public static void main(String[] args) {
		Teste t = new Teste(434);
	}

}

aqui tem algo parecido… mesmo tem um Objeto Integer, e eu passando um inteiro primitivo como argumento, ele retorna “longgg”
o programa tende a chamar o menor na hierarquia :stuck_out_tongue_winking_eye:

bem, isso é o que eu acho… talvez tenha me equivocado em algo… mas aih alguem corrija !

M

Faz sentido sua explicação !

Obrigado pela ajuda !

VLW !!

Criado 27 de novembro de 2006
Ultima resposta 27 de nov. de 2006
Respostas 4
Participantes 3