Duvida com this, get e set

8 respostas
henry.everton

Pessoal nao seria bem uma duvida mas sim só uma confirmação:

public class Pessoa{

	private int idade;
	
	public void setidade(int idade){
		int idade1=10;
		this.idade=idade-idade1;
		System.out.println(this.idade);// imprime 40
		System.out.println(idade);// imprime 50
		}
	public int getidade(){
		return(this.idade); 
		}
	}

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.

8 Respostas

neohacker

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:

public class Pessoa{
 
 	private int idade;
 	private final int ConstanteIdade = 10;

 	public void setIdade(int idade){
 		this.idade = idade - ConstanteIdade;
 		System.out.println(this.idade);// imprime 40
 		System.out.println(idade);// imprime 50
 	}
 	public int getIdade(){
 	     return idade; // 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.

Criado 15 de maio de 2007
Ultima resposta 15 de mai. de 2007
Respostas 8
Participantes 7