Encapsulamento Java
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. Encapsulamento refere-se 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 obter ocultação de 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();
}
}
Saída
Area: 30
No exemplo acima, criamos uma classe chamada Area . O objetivo principal desta classe é 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 em 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 geralmente consideram o encapsulamento como ocultação de dados, mas isso não é totalmente verdade.
Encapsulamento refere-se ao agrupamento de campos e métodos relacionados. Isso pode ser usado para obter a ocultação de dados. O encapsulamento em si não é a 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 fazendo a idade variávelprivate
e aplicando lógica dentro dosetAge()
método. Agora, idade não pode ser negativo. - Os métodos getter e setter fornecem somente leitura ou somente gravação acesso 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 (pacote) podem ser desenvolvidos, testados e depurados de forma independente e concorrente. Além disso, qualquer alteração em um componente específico não afeta outros componentes. - Também podemos ocultar dados usando encapsulamento. No exemplo acima, se alterarmos a variável comprimento e largura para privada, o acesso a esses campos será restrito.
E, eles são mantidos escondidos das classes externas. Isso é chamado de ocultação de dados .
Ocultação de dados
A ocultação de dados é uma maneira de restringir o acesso de nossos membros de dados ocultando os detalhes da implementação. O encapsulamento também fornece uma maneira de ocultar dados.
Podemos usar modificadores de acesso para ocultar 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());
}
}
Saída
My age is 24
No exemplo acima, temos um
private
campo idade . Como é private
, ele não pode ser acessado de fora da classe. Para acessar idade , usamos
public
métodos:getAge()
e setAge()
. Esses métodos são chamados de métodos getter e setter. Fazendo idade private nos permitiu restringir o acesso não autorizado de fora da classe. Isso é ocultação de dados .
Se tentarmos acessar a idade campo do Principal classe, obteremos um erro.
// error: age has private access in Person
p1.age = 24;
Java