O que é o "this"

Fala Guj,
Boa tarde a todos,

Galera, to com essa dúvida …eee eu não sei se já responderam aqui no forum…mas …lá vai …para que serve o “this” na class? :oops:

exp1:
// mutator method
public void setCpf(String cpf)
{
this.cpf = cpf;
}

exp2:
// mutator method
public void setCpf(String c)
{
cpf = c;
}

Ela faz o que? identifica o que ? ou referencia o q? :roll:

Abs de seu amigo Hahu

this é a referência da própria class.

serve para:

private String cpf1 = ""; public void setCpf(String cpf2) { this.cpf1 = cpf2; }

Assim entende melhor? :stuck_out_tongue:

Quando as variaveis tem nomes diferentes, ai não precisa de usar o this.

Mas quando existe duas variáveis com o mesmo nome, para distinguir qual é a variável externa e qual é a variável interna usa-se o this para referenciar a variável externa…

Assim o this.cpf se refere ao cpf private String cpf

private String cpf = ""; public void setCpf(String cpf) { this.cpf = cpf; }

Sakou ? :roll:

1 curtida

O this é para indicar explicitamente que você está usando algo do objeto da classe.

Por exemplo (atenção às cores - usei tracinhos ao invés de espaços pois não usei a formatação do GUJ):

public class Teste {
----private String [color=red]cpf[/color];
----public setCpf( String [color=blue]cpf [/color]) {
--------this.[color=red]cpf[/color] = [color=blue]cpf[/color];
----}
}

Nesse exemplo (igual ao seu), usa-se o this para indicar que deve-se atribuir ao campo [color=red]cpf[/color] da classe Teste o valor de [color=blue]cpf[/color] que é parâmetro do método setCpf. Como o Netuno disse, se fossem variáveis com nomes diferentes não seria necessário utilizar o this. O this nesse caso se faz necessário pois as variáveis tem o mesmo nome. Isso ai é conhecido com shadowing, ou seja, vc “sombreia” a variável de escopo de instância ou de classe com a variável de escopo do método.

Como falei, o this sempre e usado para fazer referência explícita a algum membro da classe.

Até mais!

ele referencia a própria classe, por exemplo:

[code]private String nome;

public String getNome(){
return this.nome;
}

public void setNome(String nome){
this.nome = nome; // repare que vc tem 2 variaveis com o mesmo nome, só que uma pertence ao metodo e a outra a classe
}[/code]

se vc tem um metodo que recebe como parametro um objeto, e nesse objeto vc chama esse metodo vc passa this;

[code]

public class UmObjeto{

 public void chama(){
    Teste t = new Teste();
    t.fazAlgo(this);

}

}

public class Teste{

public void fazAlgo(UmObjeto a){
}

}[/code]

nunca é demais lembrar

this é uma referência à instancia atual do objeto e, com ela, vc consegue acessar atributos e, também, métodos. this não funciona sobre atributos estáticos (pra isso vc utiliza o nome da classe), muito menos vc pode utiliza-lo em métodos estaticos (afinal eles não estão no contexto de instância). seria um erro tentar usar this a partir do método main, por exemplo.

this também pode ser utilizado para chamar o construtor da sua classe

public class A{ String name; public A(String name){ this.name = name; // isso vc conhece } public A(){ this("?"); // chama o construtor acima ! } }

Amigos,

Agradeço por mtos de vcs responderem a minha dúvida!

Nossa…graças a vcs e consegui resolver está questão…obrigado!

Abs de seu amigo Hahu :wink:
Que Deus abençõe a todos!