Tutoriais Java

Java HOME Introdução ao Java Java Começar Sintaxe Java Comentários Java Variáveis ​​Java Tipos de dados Java Cast de tipo Java Operadores Java Strings Java Java Math Java Booleanos Java Se... Senão Comutador Java Java While Loop Java para loop Java Break/Continuar Matrizes Java

Métodos Java

Métodos Java Parâmetros do método Java Sobrecarga do método Java Escopo Java Recursão Java

Classes Java

Java OOP Classes/objetos Java Atributos de classe Java Métodos de classe Java Construtores Java Modificadores Java Encapsulamento Java Pacotes Java / API Herança Java Polimorfismo Java Classes internas de Java Abstração Java Interface Java Enumerações Java Entrada de usuário Java Data Java Java ArrayList Java LinkedList Java HashMap Java HashSet Iterador Java Classes Java Wrapper Exceções Java Java RegEx Threads Java Java Lambda

Manipulação de arquivos Java

Arquivos Java Java Criar/Gravar Arquivos Arquivos de leitura Java Java Excluir Arquivos

Java como fazer

Adicionar dois números

Referência Java

Palavras-chave Java Métodos de String Java Métodos matemáticos Java

Exemplos Java

Exemplos Java Compilador Java Exercícios de Java Teste Java Certificado Java


Encapsulamento Java


Encapsulamento

O significado de Encapsulation , é garantir que os dados "sensíveis" estejam ocultos dos usuários. Para conseguir isso, você deve:

  • declarar variáveis/atributos de classe como private
  • fornecer métodos get e set públicos para acessar e atualizar o valor de uma private variável

Obter e definir

Você aprendeu no capítulo anterior que privateas variáveis ​​só podem ser acessadas dentro da mesma classe (uma classe externa não tem acesso a ela). No entanto, é possível acessá-los se fornecermos métodos públicos get e set .

O getmétodo retorna o valor da variável e o setmétodo define o valor.

A sintaxe para ambos é que eles começam com getou set, seguido pelo nome da variável, com a primeira letra em maiúscula:

Exemplo

public class Person {
  private String name; // private = restricted access

  // Getter
  public String getName() {
    return name;
  }

  // Setter
  public void setName(String newName) {
    this.name = newName;
  }
}

Exemplo explicado

O getmétodo retorna o valor da variável name.

O setmétodo pega um parâmetro ( newName) e o atribui à namevariável. A thispalavra-chave é usada para se referir ao objeto atual.

No entanto, como a namevariável é declarada como private, não podemos acessá-la de fora desta classe:

Exemplo

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.name = "John";  // error
    System.out.println(myObj.name); // error 
  }
}

Se a variável foi declarada como public, esperaríamos a seguinte saída:

John

No entanto, ao tentarmos acessar uma privatevariável, recebemos um erro:

MyClass.java:4: error: name has private access in Person
    myObj.name = "John";
         ^
MyClass.java:5: error: name has private access in Person
    System.out.println(myObj.name);
                  ^
2 errors

Em vez disso, usamos os métodos getName()e setName()para acessar e atualizar a variável:

Exemplo

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.setName("John"); // Set the value of the name variable to "John"
    System.out.println(myObj.getName());
  }
}

// Outputs "John"


Por que Encapsulamento?

  • Melhor controle de atributos e métodos de classe
  • Os atributos de classe podem ser somente leitura (se você usar apenas o getmétodo) ou somente gravação (se você usar apenas o setmétodo)
  • Flexível: o programador pode alterar uma parte do código sem afetar outras partes
  • Maior segurança dos dados