public class PowerSupply{
public PowerSupply(String voltage){
System.out.println ("PowerSupply(String) executed");
}
public PowerSupply(Object voltage){
System.out.println ("PowerSupply(Object) executed");
}
public PowerSupply(){
System.out.println ("No argument constructor execute");
}
public static void main(String[] args) {
PowerSupply ps = new PowerSupply(null);
}
}
Alguém poderia me dizer pq usa a construtora de string?
fiquei abismado …
jurava que era Object que ia chamar até agora to boiando
Ué… e porque não… você está se referindo ao Object… ou qual a tua dúvida…
Se tu instanciar o objeto com uma String… ele vai pra String… e assim por diante… se for por Object ele vai pro Object… e se nao passar nada… ele vai pro terceiro…
Agora se tu passa outro Objeto… ai eu nao sei… se da erro, ou se vai pro Object!
Abraços!
pois é … na teoria quase tudo extende objeto… então era pra ir ali pra construtora que recebe objeto…
mas o nulll … não entendi pq ele entendeu o null como string
:roll:
Quando há ambigüidade, o construtor mais específico é escolhido.
null serviria tanto para Object quanto String. Como String é mais específico, é o escolhido.
Aliás, todos objetos extendem Object, até os arrays.
Faz os seguintes testes:
1- Tire o construtor com String e adicione um com Float e outro com Number.
O primeiro a ser escolhido será Float, depois Number, depois Object.
2- Adicione Number.
Vai dar erro de compilação, já que ele não sabe qual escolher.
pois é achei muito louca essa questão…
eu tinha marcado compilation problem, pq achei que nao podia ter dois contrutores recebendo um atributo objeto… depois marquei a construtora do objeto pq achei que ele ia pro mais genérico (ao contrário eheheh)
valeu ae gurizote!
