Dúvida: Encapsulamento

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:

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”);
}
}

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.

1 curtida