this

Quando um método é aplicado a um objeto, de algum modo deve ser sinalizado ao método a qual objeto a invocação está referindo-se. Por exemplo,

  String s1 = "java";
  String s2 = "linguagem de programação orientada a objetos"; 
  int x1 = s1.length();  // 4
  int x2 = s2.length();  // 44

Nesse exemplo, o método aplicado às duas strings é o mesmo -- length(). Como o método sabe qual o objeto que ele deve "olhar" para saber o que fazer?

Por trás da resposta a essa pergunta está a presença de um "parâmetro secreto", que é passado a todo método, que é uma referência ao objeto que está realizando a invocação. Em termos de uma linguagem procedimental, isso seria o equivalente a ter para as duas últimas linhas do exemplo acima:

  int x1 = length(s1);
  int x2 = length(s2);

Se necessário, o próprio método pode ter acesso a essa referência em seu código. Essa referência é passada através da palavra-chave this, reservada para esse propósito.

Exemplos de uso de this

A palavra-chave this é utilizada principalmente em dois contextos:

  1. Diferenciar atributos de objetos de parâmetros ou variáveis locais de mesmo nome;
  2. Acessar o método construtor a partir de outros construtores.

Esse exemplo ilustra esses dois usos:

  class ThisSample {
     int x;
     int y;

     // exemplo do primeiro caso:
     public ThisSample(int x, int y) {
         this.x = x;
         this.y = y;
     }

     // exemplo do segundo caso:
     public ThisSample( ) {
         this(1, 1);
     }
  }

© Ivan Luiz Marques Ricarte
DCA/FEEC/UNICAMP

Last modified: Mon Sep 20 16:46:55 EST 1999