Acesso Privado:
O acesso privado é fácil. Somente código da mesma classe pode chamar métodos privados ou acessar campos privados.
Antes de começar, dê uma olhada na Figura 4.2. Mostra as classes que usaremos para explorar acesso e acesso padrão. As caixas grandes são os nomes dos pacotes. As caixas menores dentro deles estão as classes em cada pacote. Você pode voltar a esta figura se quiser veja rapidamente como as classes se relacionam.
Este é um código perfeitamente legal porque tudo é de uma classe:
1: package pond.duck;
2: public class FatherDuck {
3: private String noise = "quack";
4: private void quack() {
5: System.out.println(noise); // private access is ok
6: }
7: private void makeNoise() {
8: quack(); // private access is ok
9: } }
Por enquanto, tudo bem. O FatherDuck faz uma chamada para o método privado quack () na linha 8 e usa a variável noise de instância privada na linha 5.
Agora adicionamos outra classe:
1: package pond.duck;
2: public class BadDuckling {
3: public void makeNoise() {
4: FatherDuck duck = new FatherDuck();
5: duck.quack(); // DOES NOT COMPILE
6: System.out.println(duck.noise); // DOES NOT COMPILE
7: } }
O BadDuckling está tentando acessar os membros que não tem negócios a tocar. Na linha 5, ele tenta para acessar um método privado em outra classe. Na linha 6, ele tenta acessar uma instância privada variável em outra classe. Ambos geram erros de compilador. Patinho ruim! Nosso patinho ruim tem apenas alguns dias e ainda não o conhece. Felizmente, você sabe acesso a membros particulares de outras classes não é permitido e você precisa usar uma tipo de acesso.