Referência "this"

8 respostas
C

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?!

Valeu.

8 Respostas

mlopes

Vou dar um exemplo:

public class Teste {

 private int member;

 public Teste(int member) {
    // 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:
public class Leaf {
  int i = 0;

  Leaf increment() {
    i++; //Incremetna o i
    return this; // retorna a referencia para o objecto da class Leaf
  }
  void print() {
    System.out.println("i = " + i); // Imprime o i
  }

  public static void main(String[] args) {
    Leaf x = new Leaf();
    // chama o mesmo metodo varias vezes e imprime o resultado
    x.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! :slight_smile:

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

É realmente um conceito um pouco complicado… imagine por exemplo uma SACOLA que contém outras sacolas:

class Sacola {
   Sacola sac1;
   Sacola sac2;
   Sacola sac3;
   // 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

Bom, queria agradecer a ajuda e a criatividade de todos… (principalmente as “sacolas”…) Qto ao artigo do Rafael, valeu tb pela diga.

A

O exemplo das sacolas ficou eficaz. :slight_smile: Muito didático, bom mesmo. :smiley: Então, passei a entender melhor este ponteiro.

Abraços, :slight_smile:
Alfredo

Criado 11 de fevereiro de 2003
Ultima resposta 12 de fev. de 2003
Respostas 8
Participantes 7