Dúvida: Encapsulamento

2 respostas
M

Olá pessoal, tudo bem?

Comecei a aprender java há pouco tempo e algumas dúvidas estão surgindo a respeito de encapsulamento quando se trata de herança.

Aprendi que os atributos de uma classe devem ser declarados como private, pois eles só dizem respeito a ela, então apenas ela deve ter acesso direto aos seus atributos. A questão é: quando criamos os setters e getters para esses atributos estamos fornecendo um meio de acesso a eles (mesmo que indireto). Então onde fica a questão do encapsulamento já que podemos acessar e modificar esses atributos?

A pergunta pode ter ficado meio embolada, mas é pq o assunto de encapsulamento está dando um nó na minha cabeça. :confused:

2 Respostas

Jonas_B_a_r_r_o_s

Você não pode modifica-los diretamente esses atributos se eles estiverem como private, lembre-se que os atributos só estão encapsulados realmente caso estejam como private.

E estarem encapsulados também significa que não estão exposto, quero dizer não são alcançaveis atraves do . (ponto) ex:

oObjeto.altura = 5; // Suponha que ninguem possa setar um valor inferior a 10, o que voce faria?

O melhor a fazer seria construir metodos de configuração para essas variaveis de instancias que irá garantir por ex, que ninguem configure essa variavel com valor inferior a 10. ex:

public void setAltura(int alt) {e

if (alt > 10) {

altura = alt;

} else {

System.out.println(Voce não tem permissao de setar um valor inferior a 10);

}

}
M

Muito obrigado Jonas. Agora eu consegui visualizar onde fica a questão da proteção.
Não tinha passado pela minha cabeça inserir restrições dentro dos setters. Eu os imaginava apenas como um método para alterar o valor de um atributo sem fazer questionamento algum haha.

Criado 5 de junho de 2016
Ultima resposta 5 de jun. de 2016
Respostas 2
Participantes 2