Java - Encapsulamento

Encapsulationé um dos quatro conceitos OOP fundamentais. Os outros três são herança, polimorfismo e abstração.

O encapsulamento em Java é um mecanismo de agrupar 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 serão ocultadas de outras classes e podem ser acessadas apenas por meio dos métodos de sua classe atual. Portanto, também é conhecido comodata hiding.

Para obter encapsulamento em Java -

  • Declare as variáveis ​​de uma classe como privadas.

  • Fornece 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 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 deseja 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 -

Resultado

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.