Queria saber para que serve o encapsulamento, porque, por exemplo, se eu declarar variáveis privadas, de qualquer forma poderei acessá-las com get e set
private String senha;
// getter e setter
public String senha
// posso acessar também
Mas, se eu colocar como uma constante, dificilmente esse conteúdo será modificado.
final String senha;
//não modifica
Por que se usa encapsulamento para segurança, e não um valor que não muda?
Cara pelo que eu entendo o encapsulamento serve para que o usuário final tenha acesso somente para a necessidade que ele precisa, ou seja, se ele for usar o programa e for do departamento de TI ele tem que ter acesso somente a serviços de TI, e não conseguir acessar assuntos de RH por exemplo.
Agora o acesso ao get e set é sim possivel, porém não modificável facilmente, claro que pelo back end voce como programador consegue mudar o que quiser, mas usando get e set tu tem melhor controle do uso das variaveis, por exemplo:
No começo do seu codigo vc cria um int x = 10, ai la na linha 3000 tu muda x = 20, ai tu chama um metodo que muda x = 30, hora que tu for chamar algo la do começo do codigo pro final dele, seu programa vai rodar com x sendo 30, mas as vezes tu precisava que ele fosse 10, isso não ocorre com get/set, ja que na maioria dos casos tu usa o this.x.
Entao tu vai la e tem que debugar o codigo todo pra ver qual valor que ta saindo no X, ja que ele mudou varias vezes durante o codigo.
Get/Set nao é regra, mas é um padrão que os programadores desenvolveram p/ manutenção de codigo.
PS: Sou jr em programação, posso ta falando mer**, se estiver errado por favor alguem me corrija.