Introdução ao encapsulamento em Java

O encapsulamento é um dos quatro conceitos básicos de programação orientada a objetos em Java. A principal idéia por trás disso é ocultar os detalhes da implementação dos usuários. Em outras palavras, o encapsulamento é o agrupamento de dados em uma única unidade para impedir o acesso a eles do mundo exterior. Como os dados estão ocultos das outras classes, esse processo também é conhecido como ocultação de dados. Vamos considerar o funcionamento de uma lâmpada como exemplo. Não sabemos o trabalho real por trás da lâmpada, mesmo se a estivermos usando. Mas no caso do Java Encapsulation, é possível acessar os dados usando modificadores. Vamos dar uma olhada na próxima seção.

Como o encapsulamento funciona em java?

O encapsulamento funciona em Java por

  • Declarando os atributos ou variáveis ​​na classe como particulares

Por exemplo, estamos criando uma classe Employee. As variáveis ​​precisam ser definidas como privadas, como mostrado abaixo.

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

  • Criando métodos públicos em classe para obter e definir os atributos ou variáveis.

A seguir, o método get e o método set para as diferentes variáveis ​​privadas na classe Employee.

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;
)

Usando esses métodos, é possível tornar a classe somente leitura ou somente leitura, ou seja, podemos pular esses métodos, se necessário.

A seguir, algumas das vantagens do encapsulamento.

  • Simplicidade na aplicação
  • Capacidade de reutilizar ou modificar o código com base nos requisitos
  • Limita a acessibilidade dos dados
  • Facilidade no teste de unidade, pois o código é encapsulado

A classe Java Bean é um dos exemplos para a classe totalmente encapsulada, pois todos os membros de dados da classe são privados.

Exemplos de encapsulamento Java

Vamos ver um exemplo de encapsulamento com os métodos getter e setter. Para isso, crie 2 classes - uma com o método principal e outra com os métodos get e set.

Exemplo 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());
)
)

Resultado:

No programa acima, a classe Employee é encapsulada, pois as variáveis ​​são privadas. É possível ler e escrever a implementação, pois ela possui e define métodos. As variáveis ​​privadas, como EmpName, EmpSal, EmpID, são acessadas usando esses métodos e exibidas chamando os métodos usando o objeto.

Agora, vamos ver como o Encapsulation funciona com a classe somente leitura.

Exemplo 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());
)
)

Resultado:

Semelhante ao primeiro exemplo, aqui também estamos usando variáveis ​​privadas. A diferença é que não estamos usando o método set para definir valores para as variáveis ​​privadas na classe. Em vez disso, atribuímos diretamente o valor às variáveis.

Agora, podemos passar a escrever apenas classe.

Exemplo 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);
)
)

Resultado:

No exemplo acima, não estamos usando o método get para obter somente a classe de gravação. ou seja, as variáveis ​​não podem ser alteradas ou recuperadas aqui. Como não é possível obter os valores, estamos usando print dentro do método set para saída de amostra.

Conclusão

Encapsulamento é um conceito de POO em que os dados serão agrupados, ocultando todos os detalhes da implementação. Isso pode ser alcançado usando variáveis ​​privadas e métodos como obter, definido para acessar as variáveis. As principais vantagens do encapsulamento incluem flexibilidade, ocultação de dados, facilidade nos testes e reutilização .

Artigos recomendados

Este foi um guia para o encapsulamento em Java. Aqui discutimos como funciona o encapsulamento, exemplos de encapsulamento Java com códigos e saída. Você também pode ler nossos artigos para saber mais.

  1. Destruidor em Java
  2. Layout em Java
  3. Melhores compiladores Java
  4. Guia de encapsulamento em C ++
  5. Por que precisamos de encapsulamento em C?
  6. Visão geral do encapsulamento em JavaScript