This.atributo

9 respostas
0

Ola Pessoal!

Alguém pode me explicar se é necessário usar o this para acessar um atributo de uma classe através de um método da mesma? Porque?

Desde já agradeço

9 Respostas

B

Dentro da própria classe você pode acessar o atributo diretamente. this.xyz e xyz são a mesma coisa(quando não tiver outro xyz declarado no escopo).

Marky.Vasconcelos

Por que se por acaso voce nomear um parametro com o mesmo nome do atributo da classe, sem o this voce estara mudando o parametro e não o atributo da classe.

0

valeu ae galera

Tsunami1

Só pra complementar as respostas anteriores…

Imaginando um método setSalario que recebe a variável double salario e tem o mesmo nome de variavel na classe…

// (...)
private double salario;

public void setSalario (double salario)
{
       this.salario = salario;  // ou seja, a variavel dessa classe (this.salario) recebe o valor passado no parâmetro (salario)
}

Espero que a duvida tenha sido sanada…
Abraços…

fiaux

http://java.sun.com/docs/books/tutorial/java/javaOO/thiskey.html

ericsilva

Bom galera, mesmo com todos esses argumentos citados para mim o que acontece na prática é diferente da teoria. Explico, a utilização do this.atributo é facultativa é só testar!

Marky.Vasconcelos

Sim claro que é facultativa

Compile e teste ai:

public class TesteFacultativo {
private String atributo = "Atributo da classe";
public void setAtributo(String atributo){
atributo = "não usei o this";
}
public static void main(String[] args){
TesteFacultativo teste = new TesteFacultativo();
System.out.println(teste.atributo);
teste.setAtributo("To mudando para ATRIBUTO");
System.out.println(teste.atributo);
}
}
ericsilva

Claro que o intuito de usar um método set é você salvar o valor passado como parâmetro em um atributo do objeto… Para mim não tem pq eu passar um parâmetro e não usá-lo.

claudneto

Quando vc se refere a alguma variável, o "compilador" procura a variável de cima para baixo...

private String nome;

public void setNome (String nome) {
this.nome = nome;
}

Quando o compilador entra na linha 4, ele volta no começo do código e vai de cima para baixo procurando a variável nome, ele encontrará o atributo, mas não é isso que vc quer, então, como this, vc diz a ele que não é o atributo, então ele pula o atributo e continua procurando pra baixo, até encontrar o parâmetro. Já o segundo nome, não tem a cláusula this, então, ele procura de cima para baixo encontrando o atributo e atribuindo o valor a ele...

Espero ter ajudado...

Criado 14 de outubro de 2008
Ultima resposta 16 de out. de 2008
Respostas 9
Participantes 7