Introducción a la encapsulación en Java

La encapsulación es uno de los cuatro conceptos básicos de programación orientada a objetos en Java. La idea principal detrás de esto es ocultar los detalles de implementación de los usuarios. En otras palabras, la encapsulación es la recopilación de datos en una sola unidad para evitar el acceso desde el mundo exterior. Dado que los datos están ocultos de las otras clases, este proceso también se conoce como ocultación de datos. Consideremos el funcionamiento de una bombilla como ejemplo. No sabemos el funcionamiento real detrás de la bombilla, incluso si la estamos utilizando. Pero en el caso de la Encapsulación de Java, es posible acceder a los datos mediante modificadores. Echemos un vistazo en la siguiente sección.

¿Cómo funciona la encapsulación en Java?

La encapsulación funciona en Java por

  • Declarar los atributos o variables en clase como privados

Por ejemplo, estamos creando una clase Empleado. Las variables deben establecerse como privadas como se muestra a continuación.

private String EmpName;
private int EmpID;
private int EmpSal;

  • Crear métodos públicos en clase para obtener y establecer los atributos o variables.

El siguiente es el método get y el método set para las diferentes variables privadas en la clase Empleado.

Código:

public int getEmpSal()
(
return EmpSal;
)public String getEmpName()
(
return EmpName;
)
public int getEmpID()
(
return EmpID;
)
public void setEmpSal( int EmpSal)
(
this.EmpSal = EmpSal;
)
public void setEmpName(String EmpName)
(
this.EmpName = EmpName;
)
public void setEmpID( int EmpID)
(
this.EmpID = EmpID;
)

Con estos métodos, es posible hacer que la clase sea de solo escritura o solo lectura, es decir, podemos omitir estos métodos si es necesario.

Las siguientes son algunas de las ventajas de la encapsulación.

  • Simplicidad en la aplicación
  • Posibilidad de reutilizar o modificar el código en función de los requisitos.
  • Limita la accesibilidad de los datos.
  • Facilidad en las pruebas unitarias ya que el código está encapsulado

Java Bean Class es uno de los ejemplos de la clase completamente encapsulada, ya que todos los miembros de datos de la clase son privados.

Ejemplos de encapsulación de Java

Veamos un ejemplo de encapsulación con métodos getter y setter. Para eso, cree 2 clases, una con el método principal y otra con métodos get y set.

Ejemplo 1

  • Employee.java

Código:

//Java program for Encapsulation with both read and write
public class Employee (
//private variables which can be accessed by public methods of the class
private String EmpName;
private int EmpID;
private int EmpSal;
// get method to access the private integer variable EmpSal
public int getEmpSal()
(
return EmpSal;
)
// get method to access the private string variable EmpName
public String getEmpName()
(
return EmpName;
)
// get method to access the private integer variable EmpID
public int getEmpID()
(
return EmpID;
)
// set method to access the private integer variable EmpSal
public void setEmpSal( int EmpSal)
(
this.EmpSal = EmpSal;
)
// set method to access the private string variable EmpName
public void setEmpName(String EmpName)
(
this.EmpName = EmpName;
)
// set method to access the private integer variable EmpID
public void setEmpID( int EmpID)
(
this.EmpID = EmpID;
)
)

  • EmployeeEncaps.java

Código:
public class EmployeeEncaps (
public static void main(String() args) (
Employee EmpObj= new Employee(); //object of the class Employee
//passing the values to the methods using object
EmpObj.setEmpName("Anna");
EmpObj.setEmpSal(30000);
EmpObj.setEmpID(670311);
// Printing values of the variables
System.out.println("Employee's Name: " + EmpObj.getEmpName());
System.out.println("Employee's ID: " + EmpObj.getEmpID());
System.out.println("Employee's Salary: " + EmpObj.getEmpSal());
)
)

Salida:

En el programa anterior, la clase Empleado se encapsula ya que las variables son privadas. Es posible leer y escribir la implementación ya que tiene y establece métodos. Se accede a las variables privadas como EmpName, EmpSal, EmpID utilizando estos métodos y se muestran llamando a los métodos utilizando el objeto.

Ahora, veamos cómo funciona la encapsulación con la clase de solo lectura.

Ejemplo 2

  • Employee.java

Código:

//Java program for Encapsulation with read permission
public class Employee (
//private variables which can be accessed by public methods of the class
private String EmpName = "Adam";
private int EmpID = 670388;
private int EmpSal = 35000;
// get method to access the private integer variable EmpSal
public int getEmpSal()
(return EmpSal;
)// get method to access the private string variable EmpName
public String getEmpName()
(
return EmpName;
)
// get method to access the private integer variable EmpID
public int getEmpID()
(
return EmpID;
)
)

  • EmployeeEncaps.java

Código:

public class EmployeeEncaps (
public static void main(String() args) (
Employee EmpObj= new Employee(); //object of the class Employee
// Printing values of the variables
System.out.println("Employee's Name: " + EmpObj.getEmpName());
System.out.println("Employee's ID: " + EmpObj.getEmpID());
System.out.println("Employee's Salary: " + EmpObj.getEmpSal());
)
)

Salida:

Similar al primer ejemplo, aquí también estamos usando variables privadas. La diferencia es que no estamos utilizando el método set para establecer valores para las variables privadas en la clase. En cambio, asignamos directamente el valor a las variables.

Ahora, podemos pasar a escribir solo la clase.

Ejemplo 3

  • Employee.java

Código:

//Java program for Encapsulation with write permission
public class Employee (
//private variables which can be accessed by public methods of the class
private String EmpName;
private int EmpID;
private int EmpSal;
// set method to access the private integer variable EmpSal
public void setEmpSal( int EmpSal)
(
this.EmpSal = EmpSal;
//for sample output
System.out.println("Employee's Salary: " + EmpSal);
)
// set method to access the private string variable EmpName
public void setEmpName(String EmpName)
(
this.EmpName = EmpName;
//for sample output
System.out.println("Employee's Name: " + EmpName);
)// set method to access the private integer variable EmpID
public void setEmpID( int EmpID)
(
this.EmpID = EmpID;
//for sample output
System.out.println("Employee's ID: " + EmpID);
)
)

  • EmployeeEncaps.java

Código:

public class EmployeeEncaps (
public static void main(String() args) (
Employee EmpObj = new Employee(); //object of the class Employee
//passing the values to the methods using object
EmpObj.setEmpName("Iza");
EmpObj.setEmpID(670472);
EmpObj.setEmpSal(48000);
)
)

Salida:

En el ejemplo anterior, no estamos utilizando el método get para lograr la clase de solo escritura. es decir, las variables no se pueden cambiar o recuperar aquí. Como no es posible obtener los valores, estamos utilizando print dentro del método establecido para la salida de muestra.

Conclusión

La encapsulación es un concepto de OOP donde los datos se envolverán ocultando todos los detalles de implementación. Se puede lograr mediante el uso de variables privadas y métodos como obtener, configurar para acceder a las variables. Las principales ventajas de la encapsulación incluyen flexibilidad, ocultación de datos, facilidad en las pruebas y reutilización .

Artículos recomendados

Esta ha sido una guía de encapsulación en Java. Aquí discutimos cómo funciona la encapsulación, ejemplos de encapsulación Java con códigos y resultados. También puede consultar nuestros artículos para obtener más información.

  1. Destructor en Java
  2. Diseño en Java
  3. Los mejores compiladores de Java
  4. Guía de encapsulación en C ++
  5. ¿Por qué necesitamos encapsulación en C?
  6. Descripción general de la encapsulación en JavaScript