Encapsulamento em Java

Encapsulamento em Java

Encapsulamento em Java é um processo de agrupar código e dados em uma única unidade , por exemplo, uma cápsula que contém vários medicamentos.

encapsulamento em java

Podemos criar uma classe totalmente encapsulada em Java tornando privados todos os membros de dados da classe. Agora podemos usar métodos setter e getter para definir e obter os dados nele.

O Feijão Java class é o exemplo de uma classe totalmente encapsulada.

Vantagem do encapsulamento em Java

Fornecendo apenas um método setter ou getter, você pode tornar a classe somente leitura ou somente gravação . Em outras palavras, você pode pular os métodos getter ou setter.

Ele fornece a você o controle sobre os dados . Suponha que você queira definir o valor do id que deve ser maior que 100 apenas, você pode escrever a lógica dentro do método setter. Você pode escrever a lógica para não armazenar os números negativos nos métodos setter.

É uma forma de conseguir ocultação de dados em Java porque outra classe não poderá acessar os dados por meio dos membros de dados privados.

A classe encapsulada é fácil de testar . Portanto, é melhor para testes unitários.

Os IDEs padrão fornecem a facilidade de gerar getters e setters. Então é fácil e rápido criar uma classe encapsulada em Java.

Exemplo simples de encapsulamento em Java

Vejamos o exemplo simples de encapsulamento que possui apenas um campo com seus métodos setter e getter.

Arquivo: Aluno.java

 //A Java class which is a fully encapsulated class. //It has a private data member and getter and setter methods. package com.javatpoint; public class Student{ //private data member private String name; //getter method for name public String getName(){ return name; } //setter method for name public void setName(String name){ this.name=name } }  

Arquivo: Teste.java

 //A Java class to test the encapsulated class. package com.javatpoint; class Test{ public static void main(String[] args){ //creating instance of the encapsulated class Student s=new Student(); //setting value in the name member s.setName('vijay'); //getting value of the name member System.out.println(s.getName()); } }  
 Compile By: javac -d . Test.java Run By: java com.javatpoint.Test  

Saída:

 vijay  

Classe somente leitura

 //A Java class which has only getter methods. public class Student{ //private data member private String college='AKG'; //getter method for college public String getCollege(){ return college; } }  

Agora, você não pode alterar o valor do membro de dados da faculdade que é ‘AKG’.

 s.setCollege('KITE');//will render compile time error  

Classe somente gravação

 //A Java class which has only setter methods. public class Student{ //private data member private String college; //getter method for college public void setCollege(String college){ this.college=college; } }  

Agora, você não pode obter o valor da faculdade, você só pode alterar o valor do membro dos dados da faculdade.

 System.out.println(s.getCollege());//Compile Time Error, because there is no such method System.out.println(s.college);//Compile Time Error, because the college data member is private. //So, it can't be accessed from outside the class  

Outro exemplo de encapsulamento em Java

Vejamos outro exemplo de encapsulamento que possui apenas quatro campos com seus métodos setter e getter.

Arquivo: Conta.java

 //A Account class which is a fully encapsulated class. //It has a private data member and getter and setter methods. class Account { //private data members private long acc_no; private String name,email; private float amount; //public getter and setter methods public long getAcc_no() { return acc_no; } public void setAcc_no(long acc_no) { this.acc_no = acc_no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public float getAmount() { return amount; } public void setAmount(float amount) { this.amount = amount; } }  

Arquivo: TestAccount.java

 //A Java class to test the encapsulated class Account. public class TestEncapsulation { public static void main(String[] args) { //creating instance of Account class Account acc=new Account(); //setting values through setter methods acc.setAcc_no(7560504000L); acc.setName('Sonoo Jaiswal'); acc.setEmail('[email protected]'); acc.setAmount(500000f); //getting values through getter methods System.out.println(acc.getAcc_no()+' '+acc.getName()+' '+acc.getEmail()+' '+acc.getAmount()); } }  
Teste agora

Saída:

 7560504000 Sonoo Jaiswal [email protected] 500000.0