:shock:
Galera , tive lendo uma apostila de java ai em um exemplo me deparei com esse código:
AClass obj = new AClass (“Este é a instância -obj-”);
String cod = obj + “”;
System.out.println (cod); // saida: Este é a instância -obj-
como assim , uma string recebe um tipo Object???
essa eu bolei , c alguem puder me ajudar eu agradeço.
A máquina virtual chama de forma transparente método toString no objeto “obj” ao concatená-lo com outra String (no caso, “”).
mas o método toString num retorna o |nome da classe + @ + algums numeros| ?
no caso do exemplo ele retorna a string q recebe no argumento do construtor - new AClass (“Este é a …”);
exatamente sempre que você concatena algo com uma String a VM chamao o toString desse objeto…
Nesse caso que você mencionou o metodo toString deve ter sido sobreescrevido para retornar a String utilizada no construtor! Se você não sobre escreve-lo o metodo vai ser herdado da classe Object!
Só para lembrar… se você não concatenar com uma String teremos um problema de compilação… Porque um tipo AClass não pode ser atribuido a um String.
String s = new AClass("teste"); // ERRO DE COMPILAÇÃO
String s = new AClass("teste")+""; //Chama o metodo toString de AClass
[]'s
mais porque en vez de ele escrever o retorno do toString ele escreve a string q ele recebe no construtor ?
Então… vou dar um exemplo abaixo de como poderia ser a Classa AClass
public class AClass{
private String s;
public AClass(String s){
this.s=s;
}
public String toString(){
return this.s;
}
}
Entendeu???
hum isso parece override de método ou estou enganado?
Exatamente…
No caso agente fez um override ou sobrescrição do metodo!!
Se você não o fizer realmente teremos algo como AClass@6546164 !!!
Abraços!
IEH!
Kra hoje eu to mlaz mrm, nem pensei nisso!!!
ieh muito simplizim kkkkkkkkkkk
no caso o toString e reescrito para retorna o argumento do contrutor!!
pow eh q eu num to achando a definição da classe , c eu acha eu posto para poder confirmar , mais pode ser isso realmente.
abraços .