Olá amigos, sou recém “estudante” de Java e por mais que tenha lido em tutoriais, ainda não consegui entender o que a “referência this” quer dizer. No último tutorial que andei consultando, eles dizem que ela é aplicada a métodos não estáticos. Alguém poderia me dar uma luz aqui?!
publicclassTeste{privateintmember;publicTeste(intmember){// Agora como dizer que vc quer que a member da classe// obtenha o valor da member do construtor.this.member=memeber.}}
O “this” e uma refência ao objeto.
Uhm, acho q não foi la muito boa a explicação.
[]'s
Bruno_Cardoso
A keyword this pode ser usada dentro de um metodo para fazer referencia ao objecto para o qual o metodo foi chamado. Confuso? veja o exemplo abaixo:
publicclassLeaf{inti=0;Leafincrement(){i++;//Incremetna o ireturnthis;// retorna a referencia para o objecto da class Leaf}voidprint(){System.out.println("i = "+i);// Imprime o i}publicstaticvoidmain(String[]args){Leafx=newLeaf();// chama o mesmo metodo varias vezes e imprime o resultadox.increment().increment().increment().print();}}
O metodo increment() retorna sempre a referencia do objecto para o qual foi chamado (ou seja, o objecto X da class Leaf), logo podemos chamar o mesmo metodo varias vezes seguidas. Com a prática voçê irá encontrar alturas em que o this faz jeito.
PEACE!
Bruno_Cardoso
Já agora, para completar a explicação, voçê também pode usar o this dentro de um constructor para chamar outro constructor da mesma classe, veja o código:
public class Simples {
public Simples() {
this("GUJ"); //chama o outro construtor que recebe uma String
System.out.println("Constructor sem argumentos");
}
public Simples(String s) {
System.out.println(s); //imprime String
}
public static void main(String[] args) {
Simples simples = new Simples();
}
}
Simples!
PEACE!
Rafael_Steil
Eu esrevi um artigo que fala sobre a palavra-chave “static”, e ha exemplos sobre o funcionamento de “this”. Veja na secao “Artigos” aqui do GUJ, pode lhe ser util.
Rafael
C
Carlos_H
É realmente um conceito um pouco complicado… imagine por exemplo uma SACOLA que contém outras sacolas:
classSacola {
Sacolasac1;
Sacolasac2;
Sacolasac3;
// etc.
}
Se você quiser colocar lixo dentro da sacola número UM, você chama:
sac1.colocaLixo();
Mas e se você quiser colocar lixo na sacola que contém as sacolas:
this.colocaLixo();
na verdade, é exatamente a mesma coisa que simplesmente chamar:
colocaLixo();
o this é uma espécie de “caminho” para o objeto sacola QUE CONTEM AS SACOLAS. O this não pode ser utilizado porque ele se aplica aos OBJETOS criados e não à classe sacola.
espero ter ajudado!
(nossa… de onde fui tirar sacolas?)
duardor
Hehehhe
Muito boa essa das sacolas…
C
Calvin_rj
Bom, queria agradecer a ajuda e a criatividade de todos… (principalmente as “sacolas”…) Qto ao artigo do Rafael, valeu tb pela diga.
A
Alfredo_Mangia
O exemplo das sacolas ficou eficaz. Muito didático, bom mesmo. Então, passei a entender melhor este ponteiro.