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
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
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).
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.
valeu ae galera
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…
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!
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);
}
}
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.
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...