Article image
Marcos Silva
Marcos Silva01/08/2025 23:22
Compartilhe

🧠 Java e a Arte da Abstração com Classes e Encapsulamento

    Em um mundo onde sistemas se tornam cada vez mais complexos, abstração é uma das ferramentas mais poderosas do programador. No universo Java, a abstração ganha forma através de classes, encapsulamento e palavras-chave como final e record, que ajudam a criar códigos mais seguros, organizados e fáceis de manter.

    Neste artigo, vamos explorar como essas funcionalidades funcionam e como aplicá-las corretamente na prática.

    🔍 O que é Abstração?

    Abstração é o processo de esconder os detalhes de implementação e mostrar apenas o que é essencial. Em Java, isso geralmente é feito por meio de classes que representam entidades do mundo real com atributos e métodos.

    Por exemplo:

    java
    CopiarEditar
    public class Pessoa {
      private String nome;
      private int idade;
    
      public void falar() {
          System.out.println("Olá, meu nome é " + nome);
      }
    
      // getters e setters omitidos para clareza
    }
    

    Você não precisa saber como falar() é implementado, apenas que a pessoa pode “falar”.

    🧱 Encapsulamento: Protegendo os Dados

    Encapsulamento é o princípio de esconder os atributos internos de uma classe e controlá-los por meio de métodos públicos (getters e setters).

    Por que usar?

    • Segurança: impede acesso direto aos dados.
    • Flexibilidade: permite alterar a lógica interna sem afetar o restante do sistema.
    • Validação: você pode validar os dados antes de atribuí-los.

    Exemplo:

    java
    CopiarEditar
    public class ContaBancaria {
      private double saldo;
    
      public double getSaldo() {
          return saldo;
      }
    
      public void depositar(double valor) {
          if (valor > 0) {
              saldo += valor;
          }
      }
    }
    

    🏁 A Palavra-chave final

    Qual é a função da final?

    A keyword final pode ser aplicada em:

    1. Variáveis: o valor não pode mais ser alterado após a atribuição.
    2. Métodos: não podem ser sobrescritos por subclasses.
    3. Classes: não podem ser estendidas (herdadas).

    Exemplos:

    java
    CopiarEditar
    final int x = 10;
    // x = 20; // Erro de compilação
    
    public final class Animal {} // Não pode ser herdada
    
    public final void respirar() {} // Não pode ser sobrescrito
    

    No caso de variáveis do tipo objeto (ex: final Pessoa p = new Pessoa()), o que não pode ser alterado é a referência. As propriedades internas ainda podem ser modificadas, desde que não sejam final também.

    🧊 Imutabilidade com record

    O que é record em Java?

    record é um tipo especial de classe imutável introduzido no Java 14 (preview) e oficializado no Java 16. Ele é usado para representar estruturas de dados simples com menos código.

    Exemplo:

    java
    CopiarEditar
    public record Usuario(String nome, int idade) {}
    

    Isso equivale a:

    • Atributos final
    • Getters automáticos
    • Construtor com todos os argumentos
    • Implementações de equals, hashCode e toString

    Ou seja, uma vez criado:

    java
    CopiarEditar
    Usuario u = new Usuario("João", 30);
    // u.nome = "Maria"; // Não é possível!
    

    🤔 Respondendo às Questões

    1. Posso alterar as propriedades de um objeto final?

    Sim, desde que as propriedades não sejam final. final impede que você troque a referência do objeto, mas não o conteúdo interno (a não ser que o conteúdo também seja final ou imutável).

    java
    CopiarEditar
    final Pessoa p = new Pessoa();
    p.setNome("João"); // Válido
    // p = new Pessoa(); // Erro
    

    2. O que é um record?

    • Uma classe imutável
    • Construtor com argumentos
    • Getters implícitos
    • Não permite alteração após criação

    3. O que a keyword final realmente faz?

    • Torna valores imutáveis após a primeira atribuição
    • Pode ser usada em variáveis, métodos e classes
    • Ajuda a evitar erros e garantir integridade dos dados

    🎯 Conclusão

    A arte da abstração em Java vai muito além de criar classes: envolve também proteger os dados (encapsulamento), criar contratos seguros e usar ferramentas modernas como final e record para reforçar a imutabilidade e a integridade do sistema.

    Dominar esses conceitos é essencial para escrever código mais limpo, confiável e profissional.

    🚀 Próximos Passos

    • Refaça uma classe antiga sua usando record e compare.
    • Experimente usar final em todos os atributos e veja onde realmente precisa mutabilidade.
    • Refatore métodos para garantir encapsulamento correto.

    Tem dúvidas ou quer compartilhar sua experiência? Deixe um comentário na comunidade da DIO!

    Compartilhe
    Comentários (0)