Java: Encapsulamento, Modificadores de Acesso e Métodos Getters e Setters
Autor: Fhilippe Augusto | Publicado: 2011-04-11T05:40:00-07:00

Encapsulamento
A linguagem Java é conhecida por ser bastante forte e segura, aliás, segurança é um dos pilares da orientação a objetos. O encapsulamento é uma prova disso. Com o encapsulamento, nós conseguimos proteger o acesso aos atributos da nossa classe definindo como e quais métodos serão responsáveis por alterá-los.
Um exemplo disso na nossa classe Conta, seria o saldo.O saldo certamente não pode ser alterado ou manipulado diretamente,  mas sim através de métodos adequados para isso, como métodos que fazem lançamentos de débitos e créditos.
A alteração direta do saldo causaria um problema de cálculos e  inconsistência de dados.
Justamente por isso devemos criar  classes bem encapsuladas, que fornencem  métodos adequados para operar sobre os  dados dos objetos daquela classe.
O uso de encapsulamento também evita que  um programa torne-se tão interdependente que uma pequena mudança tenha grandes efeitos colaterais. 

Modificadores de Acesso
Public
O modificador public deixará visível a classe ou membro para todas as outras classes, subclasses e pacotes do projeto Java.
PrivateO modificador private deixará visível o atributo apenas para a classe em que este atributo se encontra.
ProtectedO modificador protected deixará visível o atributo para todas as outras classes e subclasses que pertencem ao mesmo pacote. A principal diferença é que apenas as classes do mesmo pacote tem acesso ao membro. O pacote da subclasse não tem acesso ao membro.
DeafaultPor padrão, a linguagem Java permite acesso aos membros apenas ao pacote em que ele se encontra.

Métodos Getters e Setters
Set
Nomeamos um método acessor com set toda vez que este método for modificar algum campo ou atributo de uma classe, ou seja, se não criarmos um método acessor set para algum atributo, isso quer dizer que este atributo não deve ser modificado.
Portanto, como o valor de um atributo da classe será modificado, não é necessário que este método retorne nenhum valor, por isso, os métodos setters são void. Porém, obrigatoriamente, eles tem que receber um argumento que será o novo valor do campo.
Get
Nomeamos um método acessor com get toda vez que este método for verificar algum campo ou atributo de uma classe.
Como este método irá verificar um valor, ele sempre terá um retorno como String, int, float, etc. Mas não terá nenhum argumento.


public class Conta {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int numero;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String dono;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private double saldo;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double limite;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Conta() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.saldo = 100;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public double getSaldo() {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return saldo;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }//método get
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;public void setSaldo(double saldo) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.saldo = this.saldo;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }//método set}