Uso do "This"

4 respostas
C

Gostaria de saber mais sobre o uso do “this”, pra que ele server e como ele funciona, se possivel façam uma linha de codigo exemplificando. :wink:

4 Respostas

J

O this server para referenciar a própria classe, geralmente ele é usado quando ocorre sombreamento de variáveis (quando um parâmetro ou uma variável local tem o mesmo nome de um atributo da classe):

class Teste {
    private int numero;

    public void setNumero(int numero) {
        // O this.numero representa o atributo numero da classe Teste
        // Já o numero representa o parâmetro
        this.numero = numero;
    }
}

Espero ter ajudado…
Flw…

E

Você pode usar o this também para chamada de outro construtor com diferente assinatura, e tem que ser usado na primeira linho do método:
Exemplo:

public class Teste{

private int x,y,z;

public Teste(int x, int y, int z){

this.x = x;

this.y = y;

this.z = z;

}
public Teste(int xCoord, int yCoord){

this(xCoord, yCoord, 0);

}

}
D

Ex…

public class Teste{

String nome;
String idade;

public void setNome(String nome){

this.nome = nome;

}

}

Neste caso o this está sendo usado para fazer referência ao atributo nome, geralmente em java não existe a necessidade de especificar com this, mas o mesmo geralmente é utilizado por questões de “boas-praticas”.
Por ex. o codigo abaixo tbm funcionaria corretamente.

public class Teste{

String nome;
String idade;

public void setNome(String recebeNome){

nome = recebeNome;

}

}

Acho que é isso.
Abraco…

R

O this representa o objeto atual, que chamou o método.

class Teste {

private int x;

public Teste (int paramX)  {
    this.x = paramX;
}

public int getX() { return this.x; }

}

class UsaTeste {

public static void main(String[] args) {

//*** Na linha abaixo, é como se, em tempo de execução, 
   //*** fosse colocado no construtor obj.x = paramX; pois
   //*** o this no momento se refere a obj.
   Teste obj = new Teste(1000);

   //*** Mesma idéia na linha de baixo. É como se,
   //*** em tempo de execução, fosse colocado
   //*** no méodo getX(): return obj.x, pois foi
   //*** obj que chamou o método, assim, a máquina
   //*** virtual entende o this como obj.
   System.out.println(obj.getX());

}

}

Espero tê-lo ajudado.

Abraços.

Criado 19 de março de 2005
Ultima resposta 25 de mar. de 2005
Respostas 4
Participantes 5