Fala pessoal.
Eu to lendo o DEITEL e to na pagina 366. To entendendo na moral mas so que
eu to com a seguinte duvida.
Porque quando a gente usa o this, ele fica com uma chamada implicita para o
ultimo metodo que foi utilizado com ele ? (esta correto esse meu
“entendimento” ?!). Como o metodo fica “gravado”, como se explica isso por
favor ?
No exemplo
Agora o outro problema… Eu sei que as chamadas de metodo em cascata elas
devem ter como tipo de retorno o objeto que se esta usando mas porque usar o
return this; ? Por favor n respodam que eh pra permitir o encadeamento
isso eu sei mas eu quero saber como essa referencia eh passada… n entendi
isso
Amigo,
Na verdade o this faz referência para o objeto(classe) em si. E ele não guarda referência para o último método chamado.
Se você passar o this para qualquer método, você está passado o próprio objeto.
O método toString() existe em qualquer classe pois é herdado da classe java.lang.Object. E chamada explicita do método this.toString() terá o mesmo resultado que a passagem do objeto para um saida qq. Ou seja, quando você concatena o objeto(this) com uma String, implicitamente a JVM chama o método toString().
Agora se você fizer o mesmo teste com outro método verá que isto não acontece, pois passar o this para o System.out.println() por exemplo vai imprimir o endereço de memória do objeto em questão, e não chamar o último metódo usado.
publicclassSoma{publicSoma(){}publicintsoma(intb,intd){returnb+d;}publicStringresultado(intb,intd){return" O resultado de "+b+" + "+d+" é "+this.soma(b,d)+" this="+this;}publicstaticvoidmain(Stringargs[]){Somas=newSoma();System.out.println(s.resultado(1,2));}}
Conseguiu entender?
N
net_sandro
É isso aí, você fez uma concatenação de uma String com um objeto, então o java interpreta da seguinte forma:
String + Objeto == String + Objeto.toString();
Ele tenta transformar seu objeto em uma String (ou algo assim) através da chamada do método toString().
De fato, ele não guarda uma referência para o último método.
J
JBoy_
ahhhhhh… saquei hehe
Entao so pra ter certeza: Quando se utiliza this em uma String ele usa o Objeto (no caso a classe q a gente esta usando) com o metodo do toString… no caso como sandro disse Objeto.toString() correto ?
Ele nao eh uma referencia a o ultimo metodo chamado e sim ao toString() do Objeto correto ?
Leandro_Rangel_Santo
o this não vai fazer referencia a metodos do objeto ,nunca .
this é apenas um apontador que aponta para o objeto
se você quer concatenar esse objeto ,com uma string usando a referencia this ,o fato do operador “+” ser sobrecarregado para poder fazer a concatenação ,o metodo toString() é chamado .