1
resposta

[Dúvida] Interface X Classe X Enum X Record: quando usar?

É provável que esta dúvida já tenha sido respondida aqui. Estou iniciando meu aprendizado em Java e alguém poderia, por favor, me explicar o que é e para que serve Enum, Interface, Classe e Record em Java?

Agradeço desde já a ajuda.

1 resposta

Oii, tudo bem?

Essa é uma dúvida muito comum para quem está começando, Gabriel.

No Java, cada uma dessas estruturas possui um propósito específico para organizar o código. Como você tá lidando com um projeto antigo, entender essas diferenças vai ajudar você a identificar por que certas partes do sistema foram escritas de determinada forma.

Classe (class)

A classe é a unidade básica da Programação Orientada a Objetos. Ela serve como um molde para criar objetos.

  • Para que serve: Representar entidades do mundo real ou conceitos do sistema que possuem estado (atributos) e comportamento (métodos).
  • Quando usar: Quando você precisa criar objetos que guardam dados e executam ações, como uma classe Usuario ou ProcessadorDePagamento.

Interface (interface)

A interface funciona como um contrato. Ela define o que uma classe deve fazer, mas não como ela faz.

  • Para que serve: Estabelecer um padrão que diferentes classes podem seguir. Isso permite que você troque uma implementação por outra sem quebrar o restante do sistema.
  • Quando usar: Quando você tem diferentes formas de realizar uma tarefa. Por exemplo, uma interface Autenticador pode ser implementada por AutenticacaoViaSenha ou AutenticacaoViaDigital.

Enum (enum)

O Enum (abreviação de enumeration) é um tipo especial usado para definir um conjunto fixo de constantes.

  • Para que serve: Garantir que uma variável só receba valores específicos e conhecidos, evitando erros de digitação ou valores inválidos.
  • Quando usar: Para representar opções fixas como dias da semana, status de um pedido (PENDENTE, PAGO, CANCELADO) ou níveis de acesso.

Record (record)

Introduzido em versões mais recentes do Java (Java 14+), o Record é uma forma simplificada de criar classes que servem apenas para carregar dados.

  • Para que serve: Eliminar o código repetitivo (boilerplate) como getters, toString, equals e hashCode. O Record é imutável por padrão, o que significa que seus dados não mudam após a criação.
  • Quando usar: Quando você precisa de uma classe apenas para transportar dados entre diferentes partes do sistema (os chamados DTOs), sem lógica complexa associada.

Resumo Comparativo

EstruturaObjetivo PrincipalExemplo de Uso
ClasseDefinir objetos com estado e comportamento.Funcionario, ContaBancaria
InterfaceDefinir um contrato de comportamento.Calculavel, ArmazenamentoDados
EnumDefinir uma lista de valores fixos.MesDoAno, PrioridadeTarefa
RecordTransportar dados de forma imutável.EnderecoDTO, DadosLogin

Espero ter ajudado.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!