Encapsulación Java

En este tutorial, aprenderá sobre la encapsulación y la ocultación de datos en Java con la ayuda de ejemplos.

Encapsulación Java

La encapsulación es una de las características clave de la programación orientada a objetos. La encapsulación se refiere a la agrupación de campos y métodos dentro de una sola clase.

Evita que las clases externas accedan y cambien los campos y métodos de una clase. Esto también ayuda a lograr la ocultación de datos .

Ejemplo 1: Encapsulación de Java

 class Area ( // fields to calculate area int length; int breadth; // constructor to initialize values Area(int length, int breadth) ( this.length = length; this.breadth = breadth; ) // method to calculate area public void getArea() ( int area = length * breadth; System.out.println("Area: " + area); ) ) class Main ( public static void main(String() args) ( // create object of Area // pass value of length and breadth Area rectangle = new Area(5, 6); rectangle.getArea(); ) )

Salida

 Superficie: 30

En el ejemplo anterior, hemos creado una clase llamada Área. El objetivo principal de esta clase es calcular el área.

Para calcular un área, necesitamos dos variables: longitud y anchura y un método: getArea(). Por lo tanto, agrupamos estos campos y métodos dentro de una sola clase.

Aquí, también se puede acceder a los campos y métodos desde otras clases. Por lo tanto, esto no es ocultar datos .

Esto es solo encapsulación . Solo mantenemos juntos códigos similares.

Nota : la gente suele considerar la encapsulación como un ocultamiento de datos, pero eso no es del todo cierto.

La encapsulación se refiere a la agrupación de campos y métodos relacionados. Esto se puede utilizar para lograr la ocultación de datos. La encapsulación en sí misma no esconde datos.

¿Por qué la encapsulación?

  • En Java, la encapsulación nos ayuda a mantener juntos los campos y métodos relacionados, lo que hace que nuestro código sea más limpio y fácil de leer.
  • Ayuda a controlar los valores de nuestros campos de datos. Por ejemplo,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Aquí, estamos haciendo la variable de edad privatey aplicando lógica dentro del setAge()método. Ahora bien, la edad no puede ser negativa.
  • Los métodos getter y setter proporcionan acceso de solo lectura o solo escritura a nuestros campos de clase. Por ejemplo,
     getName() // provides read-only access setName() // provides write-only access
  • Ayuda a desacoplar los componentes de un sistema. Por ejemplo, podemos encapsular código en varios paquetes.
    Estos componentes desacoplados (paquete) se pueden desarrollar, probar y depurar de forma independiente y simultánea. Y cualquier cambio en un componente en particular no tiene ningún efecto en otros componentes.
  • También podemos lograr la ocultación de datos mediante encapsulación. En el ejemplo anterior, si cambiamos la variable de longitud y amplitud a privada, entonces el acceso a estos campos está restringido.
    Y se mantienen ocultos de las clases externas. A esto se le llama ocultación de datos .

Ocultar datos

La ocultación de datos es una forma de restringir el acceso de nuestros miembros de datos al ocultar los detalles de implementación. La encapsulación también proporciona una forma de ocultar datos.

Podemos usar modificadores de acceso para lograr la ocultación de datos. Por ejemplo,

Ejemplo 2: ocultación de datos utilizando el especificador privado

 class Person ( // private field private int age; // getter method public int getAge() ( return age; ) // setter method public void setAge(int age) ( this.age = age; ) ) class Main ( public static void main(String() args) ( // create an object of Person Person p1 = new Person(); // change age using setter p1.setAge(24); // access age using getter System.out.println("My age is " + p1.getAge()); ) )

Salida

 Mi edad es 24

En el ejemplo anterior, tenemos una privateedad de campo. Dado que lo es private, no se puede acceder desde fuera de la clase.

Para acceder a la edad, hemos utilizado los publicmétodos: getAge()y setAge(). Estos métodos se denominan métodos getter y setter.

Hacer que la edad sea privada nos permitió restringir el acceso no autorizado desde fuera de la clase. Esta es la ocultación de datos .

Si intentamos acceder al campo de edad desde la clase Main, obtendremos un error.

 // error: age has private access in Person p1.age = 24;

Articulos interesantes...