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.
A palavra-chave this é utilizada principalmente em dois contextos:
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