English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, você aprenderá sobre a encapsulação e a ocultação de dados no Java através de exemplos.
A encapsulação é uma das funcionalidades importantes da programação orientada a objetos. Encapsulação é o ato de ligar campos e métodos em um único classe.
Agrupar campos e métodos semelhantes dentro de uma classe também ajuda a ocultar dados.
Normalmente, a encapsulação é o processo de empacotar código semelhante em um único lugar.
No Java, podemos agrupar campos e métodos que operam juntos em uma única classe. Por exemplo:
class Rectangle { int length; int breadth; public void getArea() {} }
No programa acima, o método getArea() calcula a área do retângulo. Para calcular a área, ele precisa da largura (length) e da largura (breadth). Portanto, os campos de dados length, breadth e o método getArea() são colocados na classe Rectangle.
A ocultação de dados é uma maneira de limitar o acesso aos membros de dados ocultando os detalhes de implementação.
A encapsulação também oferece um método para ocultar dados.
A ocultação de dados pode ser implementada através de modificador de acesso. No Java, há quatro modificador de acesso:
public - A propriedade ou método decorado é público e pode ser acessado em qualquer lugar, todos os atributos e métodos são públicos por padrão
private - A propriedade ou método decorado é privado e não pode ser acessado fora da classe onde foi declarado
protected - modificado pelos atributos ou métodos protegidos, é semelhante ao private, a diferença é que ele também é permitido ser acessado nas subclasses
default - ou seja, sem qualquer modificador de acesso, geralmente chamado de "padrão de acesso padrão". Neste modo, apenas o acesso dentro do mesmo pacote é permitido.
Para obter mais informações, acesseModificador Java。
class Person { private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } } class Main { public static void main(String[] args) { Person p1 = new Person(); p1.setAge(24); System.out.println("Minha idade é ", + p1.getAge()); } }
Saída de dados
Minha idade é 24
No exemplo acima, temos um campo privado age. Porque é privado, não pode ser acessado do exterior da classe. Para acessar age, usamos métodos públicos getAge() e setAge(). Esses métodos são chamados de getter e setter.
Se tentar acessar o campo age a partir da classe Main,会出现 uma mensagem de erro.
p1.age = 24; // error: age has private access in Person
Definir age como privado pode limitar o acesso não autorizado de fora da classe. Isso é ocultação de dados.
class Person { protected String profession; protected void displayInfo() { System.out.println("I am a ", + profession); } } class Teacher extends Person { public static void main(String[] args) { Teacher t1 = new Teacher(); t1.profession = "teacher"; t1.displayInfo(); } }
Saída de dados
I am a teacher
No programa acima, criamos uma classe Person que contém os campos protegidos profession e o método protegido displayInfo().
Já acessamos esses membros a partir da classe Teacher (subclasse de Person).
No Java, a encapsulamento pode ajudar a manter juntos os campos e métodos relacionados, tornando nosso código mais organizado e fácil de ler.
Isso ajuda a controlar as modificações de nossos campos de dados. Considere uma situação em que desejamos que o campo age da classe seja um número não negativo. Aqui, podemos definir age como privado e aplicar lógica dentro do método setAge(). Por exemplo,
class Person { private int age; public void setAge(int age) { if (age >= 0) { this.age = age; } } }
Os métodos getter e setter fornecem acesso leitura ou escrita para nossos campos de classe. Por exemplo:
getName() // Fornecer acesso apenas para leitura setName() //Fornecer acesso apenas para escrita
Isso ajuda a desacoplar os componentes do sistema. Esses componentes desacoplados podem ser desenvolvidos, testados e depurados de forma independente e simultânea. E, qualquer alteração em um componente específico não afetará outros componentes.
As pessoas geralmente consideram a encapsulação como ocultação de dados, mas isso não é completamente correto.
A encapsulação é o ato de agrupar campos e métodos relacionados.Isso nos permite implementar a ocultação de dados.A encapsulação em si não é ocultação de dados.