Java posee los llamados modificadores de visibilidad, estos nos permiten establecer algunos permisos sobre los atributos, de forma que podemos establecer que solo los objetos puedan acceder a ellos, tal vez otras clases o simplemente solo sean accesibles por la misma clase.
Modificador Público
Este es el modificador estándar y tal vez es el más conocido ya que los ejemplos iniciales de programas en Java lo utilizan para reducir la complejidad de los mismos. El modificador public permite que cualquier elemento de nuestro programa pueda acceder a la clase, propiedad o método que lleve dicho modificador.
Esto puede ser útil para muchas cosas, pero cuando estamos pensando en orientación a objetos debemos utilizar la filosofía y establecer efectivamente que puede y que no puede ser público, para ello recurriremos a otros modificadores.
Modificador Privado
Este modificador a diferencia del anterior solo permite acceso a las propiedades y métodos que lo poseen a elementos miembros de la clase que define la propiedad o método privado, para ello utilizaremos la palabra reservada private antes de la definición de cada uno.
Definiendo Elementos Privados
Para poder empezar a utilizar nuestro nuevo conocimiento debemos ver cómo podemos expresar esto en código, para ello veamos la siguiente imagen con una definición de clase básica:
Vemos acá como definimos la clase de forma public, esto quiere decir que cualquier elemento podrá tener acceso a la misma y esto es lo más lógico en la mayoría de los casos, sin embargo dentro de la misma utilizamos private para definir una propiedad llamada x, esto quiere decir que ningún elemento fuera de la clase que lo define podrá acceder a dicha propiedad, por lo que vemos que el método main() podrá imprimir los valores sin problemas, pero si hacemos lo mismo en otra clase obtendremos un error.
También tenemos en este ejemplo que podemos modificar la visibilidad de un método y sucede igual que con la propiedad o atributo solo la clase que lo define puede interactuar con él.
Con esto finalizamos este tutorial, ya debemos tener una noción básica de como poder trabajar con el encapsulamiento de nuestros programas, de esta forma podremos implementar la filosofía de la programación orientada a objetos de una manera más efectiva y más apegada a los cánones y estándares de Java.