Encapsulamento em Java

Estaremos falando sobre o encapsulamento Java hoje na esperança de que isso nos ajude a alcançar nossos objetivos de aprendizado.

Encapsulamento Java

Encapsulamento, em Java , significa ocultar dados confidenciais dos usuários, que é o significado de encapsulamento Java . Por exemplo:

A Tesla projeta e fabrica veículos elétricos (carros e caminhões elétricos) baseados em módulos de IA. Apesar de fornecer ao comprador todos os luxos, a empresa guarda para si todas as suas ideias-chave e códigos.

Isso impede que usuários comuns tenham acesso a eles ou possam violá-los ou modificá-los de qualquer forma. É aqui que o encapsulamento entra em ação.

Você deve seguir estas etapas para conseguir isso:

  • As variáveis/atributos de uma classe devem ser declarados private .
  • Você pode acessar e atualizar o valor de uma variável privada fornecendo métodos get e set públicos .


Obter e definir

O capítulo anterior ensinou que as variáveis ​​privadas são acessíveis apenas dentro da mesma classe (elas não podem ser acessadas por classes externas). Fornecer métodos get e set públicos , no entanto, permite o acesso a eles.

Os valores podem ser retornados pelo método get e os valores podem ser definidos pelo método set .

Ambos começam com get ou set , seguidos pelo nome da variável com a primeira letra maiúscula:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Second {
private String topic; // private attributes are only accessible in the class they are created in
// Getter
public String getTopic() {
return topic;
}
// Setter
public void setName(String new_Topic) {
this.topic =new_Topic;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Exemplo de Explicação

O método get retorna o valor da variável tópico.

O método set pega um parâmetro (new_Topic) e o atribui à variável do tópico.

Esta palavra-chave é usada para se referir ao objeto atual.

No entanto, como a variável do tópico é declarada como private , não podemos acessá-la de fora desta classe.

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Second {
private String topic; // private attributes are only accessible in the class they are created in
// Getter
public String getTopic() {
return topic;
}
// Setter
public void setTopic(String new_Topic) {
this.topic =new_Topic;
}
}
public class Main {
public static void main(String[] args) {
Main my_Object = new Main();
my_Object.topic="Getter and Setter"; // As the variable topic is private hence it is inaccessible by directly invoking it from an object
System.out.println(my_Object.topic); // As a result, an error will be generated
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

A saída a seguir seria esperada se a variável fosse tornada pública .

Getter and Setter

A tentativa de acessar uma variável privada , no entanto, resulta em um erro:

MyClass.java:4: error: topic has private access in Main
my_Object.topic = "Getter and Setter";
^
MyClass.java:5: error: topic has private access in Main
System.out.println(my_Object.topic);
^
2 errors

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Second {
private String topic; // private attributes are only accessible in the class they are created in
// Getter
public String getTopic() {
return topic;
}
// Setter
public void setTopic(String new_Topic) {
this.topic =new_Topic;
}
}
public class Main {
public static void main(String[] args) {
Second my_Object = new Second();
my_Object.topic="We are learning Java Encapsulation today "; // As the variable topic is private hence it is inaccessible by directly invoking it from an object
System.out.println(my_Object.topic); // As a result, an error will be generated
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Como alternativa , podemos acessar e atualizar a variável usando geTopic() e setTopic() :

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Main class is created here which contains a private attributed named as topic
public class Main {
private String topic; // private attributes are only accessible in the class they are created in
// Getter
public String getTopic() {
return topic;
}
// Setter
public void setTopic(String new_Topic) {
this.topic =new_Topic;
}
}
// Main class code ends here
// Second class code starts here:
public class Second {
public static void main(String[] args) {
Main my_Object = new Main();
my_Object.setName("Getter and Setter Method ");
System.out.println("Topic: "+my_Object.getTopic());
// Now the value of the variable is accessible because we have used the getter and setter methods here
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Da mesma forma, a idade ampla privada pode ser acessada usando os métodos getAge() e setAge() :

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class Main {
private int age; // age here is a private variable and can be accessed within class only
// Getter
public int getAge() {
return age;
}
// Setter
public void setAge(int new_Age) {
this.age =new_Age;
}
}
// Main class code ends here
public class Second {
public static void main(String[] args) {
Main my_Object = new Main();
my_Object.setAge(22);
System.out.println("Age: "+my_Object.getAge());
// The variable age is easily accessible here
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Por que encapsulamento?

  • Métodos e atributos de classes podem ser melhor controlados.
  • Ao usar apenas os métodos get ou set, os atributos podem ser definidos como somente leitura ou somente gravação.
  • O código é flexível: o programador pode modificar uma parte sem afetar outras partes.
  • A segurança dos dados é aprimorada.

 

 

Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone