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.
- Destruidor em Java
- Layout em Java
- Melhores compiladores Java
- Guia de encapsulamento em C ++
- Por que precisamos de encapsulamento em C?
- Visão geral do encapsulamento em JavaScript