bom este código recebe um valor int em idade. 50 por exemplo
seguinte, quando eu coloco this estou fazendo referencia a idade private certo? por este motivo, se eu coloco idade-idade1 imprime 40 certo?
posso dizer entao que a atributo private idade nunca será alterado diretamente em um parametro, ele sempre tem de ser tratado dentro do set, e sempre recebendo algum valor.
digo isso pq se eu dou um print em idade, ele imprime 50 que é o valor do parametro recebido!!!!
Esta afirmação está correta?
Se alguem me ajudar agradeço muito, pois é somente isso que me falta entender pra comecar a fazer alguns programinhas mesmo e nao mais exercicios simples com uma classe.
Primeiro vc está passando sempre 50 por parametro?? this significa olha para ele mesmo ou seja olhar para o objeto e não aonde está sendo realizado o código, por isso o this vai msm olhar para o atributo da classe Pessoa.
Dica: o padrão para nomear os métodos é getIdade e setIdade
ph_ms
bom… vamos lá…
o ‘this’, quer dizer que você está acessando um atributo do próprio objeto em questão, não tem relação com fato do atributo ser private, ok?
A questão de ser alterado pelo set… é uma questão de segurança, ou seja, o próprio objeto alterar os valores de seus atributos, e para isso ser verdade, necessita-se que os atributos sejam private, pq senão outros objetos podem acessar, ok?!
Melhorando seu código:
publicclassPessoa{privateintidade;privatefinalintConstanteIdade=10;publicvoidsetIdade(intidade){this.idade=idade-ConstanteIdade;System.out.println(this.idade);// imprime 40System.out.println(idade);// imprime 50}publicintgetIdade(){returnidade;// aqui nao precisa colocar this.idade, pq nao tem outra variavel idade nesse escopo, ok?}}
adriano.ferranti
O que acontece é um sombreamento da variável de instãncia pela local. Se você tiver uma variável local e uma de instância com o mesmo nome, o que você acessará dentro do método será a variável local. Então para acessar a variável pertencente à instância da classe precisa colocar:
this.nome_variavel
O que significa que o que você quer é a variável com aquele nome mas pertencente ao escopo da classe ao invés do escopo do método.
fsquadro
Certo, quando você usa o this, você faz referencia ao atributo da classe em questão.
Isso, quando você declara um atributo como private, significa que ele só poderá ter acesso a ele pela classe, através de um método.
O valor idade (que não é o atributo, e sim o parametro), ele só existe durante a execução do método. Encerrada a execução, o que existe é o que foi setado no atributo, que poderá ser obtido através do método get.
henry.everton
Cara muito interassante, mas muito mesmo.
eu criei mesmo desta forma, mais para ter uma noção de como era mesmo sabe, mas é muito mas muito interessante.
agora tirando a duvida do get e set … vc diz nomear nos padroes java certo?
getIdade e setIdade?
alias… eu posso ter um this em uma unica classe?, digo indiferente de ter um objeto ou nao… por exemplo… eu consigo ter this, get e set em uma unica classe que irá manipular seus dados dentro dela?
adriano.ferranti
this é a referência à INSTÂNCIA e não à classe.
Por exemplo se você estiver em um método estático você não tem referência à uma instância e não pode usar this.
Marky.Vasconcelos
Getters e Setters é um padrão de nomenclatura
o setIdade e getIdade vc podia muito bem se quisesse escrever colocaIdade e pegaIdade ou como quiser
Mas o padrão é para outros programadores que saberão oque significa ao analizar seu código
nicoweda
Vale lembrar que naum se trata apenas de melhorar a legibilidade do codigo, mas tambem estes padroes surgiram para facilitar a integracao entre componentes.