Encapsulamento Java

Neste tutorial, você aprenderá sobre encapsulamento e ocultação de dados em Java com a ajuda de exemplos.

Encapsulamento Java

O encapsulamento é um dos principais recursos da programação orientada a objetos. O encapsulamento se refere ao agrupamento de campos e métodos dentro de uma única classe.

Impede que classes externas acessem e alterem campos e métodos de uma classe. Isso também ajuda a conseguir ocultar os dados .

Exemplo 1: Encapsulamento Java

 class Area ( // fields to calculate area int length; int breadth; // constructor to initialize values Area(int length, int breadth) ( this.length = length; this.breadth = breadth; ) // method to calculate area public void getArea() ( int area = length * breadth; System.out.println("Area: " + area); ) ) class Main ( public static void main(String() args) ( // create object of Area // pass value of length and breadth Area rectangle = new Area(5, 6); rectangle.getArea(); ) )

Resultado

 Área: 30

No exemplo acima, criamos uma classe chamada Area. O objetivo principal desta aula é calcular a área.

Para calcular uma área, precisamos de duas variáveis: comprimento e largura e um método: getArea(). Portanto, agrupamos esses campos e métodos dentro de uma única classe.

Aqui, os campos e métodos também podem ser acessados ​​de outras classes. Portanto, isso não é ocultação de dados .

Isso é apenas encapsulamento . Estamos apenas mantendo códigos semelhantes juntos.

Observação : as pessoas costumam considerar o encapsulamento como ocultação de dados, mas isso não é totalmente verdade.

O encapsulamento se refere ao agrupamento de campos e métodos relacionados. Isso pode ser usado para alcançar a ocultação de dados. O encapsulamento em si não é ocultação de dados.

Por que encapsulamento?

  • Em Java, o encapsulamento nos ajuda a manter campos e métodos relacionados juntos, o que torna nosso código mais limpo e fácil de ler.
  • Ajuda a controlar os valores dos nossos campos de dados. Por exemplo,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Aqui, estamos criando a variável de idade privatee aplicando a lógica dentro do setAge()método. Agora, a idade não pode ser negativa.
  • Os métodos getter e setter fornecem acesso somente leitura ou somente gravação aos nossos campos de classe. Por exemplo,
     getName() // provides read-only access setName() // provides write-only access
  • Ajuda a desacoplar componentes de um sistema. Por exemplo, podemos encapsular o código em vários pacotes.
    Esses componentes desacoplados (bundle) podem ser desenvolvidos, testados e depurados de forma independente e simultânea. E, quaisquer alterações em um determinado componente não têm nenhum efeito em outros componentes.
  • Também podemos obter ocultação de dados usando encapsulamento. No exemplo acima, se alterarmos a variável de comprimento e largura para privada, o acesso a esses campos é restrito.
    E, eles são mantidos ocultos das classes externas. Isso é chamado de ocultação de dados .

Ocultação de dados

A ocultação de dados é uma forma de restringir o acesso de nossos membros de dados, ocultando os detalhes de implementação. O encapsulamento também fornece uma maneira de ocultar os dados.

Podemos usar modificadores de acesso para conseguir ocultar os dados. Por exemplo,

Exemplo 2: ocultação de dados usando o especificador privado

 class Person ( // private field private int age; // getter method public int getAge() ( return age; ) // setter method public void setAge(int age) ( this.age = age; ) ) class Main ( public static void main(String() args) ( // create an object of Person Person p1 = new Person(); // change age using setter p1.setAge(24); // access age using getter System.out.println("My age is " + p1.getAge()); ) )

Resultado

 Minha idade é 24

No exemplo acima, temos um privatecampo age. Como está private, não pode ser acessado de fora da classe.

Para acessar a idade, usamos os publicmétodos: getAge()e setAge(). Esses métodos são chamados de métodos getter e setter.

Tornar a idade privada nos permitiu restringir o acesso não autorizado de fora da classe. Isso é ocultação de dados .

Se tentarmos acessar o campo idade da classe Principal, obteremos um erro.

 // error: age has private access in Person p1.age = 24;

Artigos interessantes...