Java - Encapsulamento
Encapsulação é um dos quatro conceitos fundamentais de POO. Os outros três são herança, polimorfismo e abstração.
Encapsulamento em Java é um mecanismo de empacotar os dados (variáveis) e o código agindo nos dados (métodos) juntos como uma única unidade. No encapsulamento, as variáveis de uma classe ficarão ocultas de outras classes, podendo ser acessadas apenas através dos métodos de sua classe atual. Portanto, também é conhecido como ocultação de dados .
Para alcançar o encapsulamento em Java −
-
Declare as variáveis de uma classe como privadas.
-
Forneça métodos setter e getter públicos para modificar e visualizar os valores das variáveis.
Exemplo
A seguir está um exemplo que demonstra como obter o encapsulamento em Java −
/* File name : EncapTest.java */ public class EncapTest { private String name; private String idNum; private int age; public int getAge() { return age; } public String getName() { return name; } public String getIdNum() { return idNum; } public void setAge( int newAge) { age = newAge; } public void setName(String newName) { name = newName; } public void setIdNum( String newId) { idNum = newId; } }
Os métodos públicos setXXX() e getXXX() são os pontos de acesso das variáveis de instância da classe EncapTest. Normalmente, esses métodos são chamados de getters e setters. Portanto, qualquer classe que queira acessar as variáveis deve acessá-las por meio desses getters e setters.
As variáveis da classe EncapTest podem ser acessadas usando o seguinte programa −
/* File name : RunEncap.java */ public class RunEncap { public static void main(String args[]) { EncapTest encap = new EncapTest(); encap.setName("James"); encap.setAge(20); encap.setIdNum("12343ms"); System.out.print("Name : " + encap.getName() + " Age : " + encap.getAge()); } }
Isso produzirá o seguinte resultado -
Saída
Name : James Age : 20
Benefícios do Encapsulamento
-
Os campos de uma classe podem ser somente leitura ou somente gravação.
-
Uma classe pode ter controle total sobre o que está armazenado em seus campos.
Java