Por que é uma boa prática usar encapsulamento em classes Java?
para evitar herança múltipla.

Passo 1

Beleza! O enunciado pergunta “Por que é uma boa prática usar encapsulamento em classes Java?” e já sugere a resposta “para evitar herança múltipla”.
Conteúdo: Programação Orientada a Objetos (OOP) em Java, focando em encapsulamento (aqui entendido como “usar composição/encapsulação de objetos em vez de estender várias classes”).
O que vamos precisar:
  • Entender o que é herança múltipla e por que Java não a permite.
  • Ver a diferença entre herança e composição (encapsulamento de objetos).
  • Discutir vantagens do encapsulamento/ composição em vez de herdar várias classes.

Passo 2

Antes de mais nada, qual é o problema da herança múltipla?
  1. Em linguagens que permitem herdar de duas (ou mais) classes, pode rolar conflito de métodos iguais em superclasses diferentes.
  2. Isso aumenta o acoplamento (dependência forte entre classes), dificultando manutenção.
  3. Java decidiu não ter herança múltipla de classes para evitar essa “confusão de diamante” (diamond problem).

Passo 3

Então, como a gente faz para reaproveitar funcionalidades de várias “fontes” sem herdar de várias classes? A resposta é COMPOSIÇÃO (ou encapsulamento de objetos):
  • Em vez de dizer class Filho extends Pai1, Pai2, a gente cria
    class Pai1 { … }
    class Pai2 { … }
    class Filho {
      private Pai1 p1;
      private Pai2 p2;
      // aqui a gente “encapsula” Pai1 e Pai2 dentro de Filho
    }
    
  • Dentro de Filho, usamos os métodos de p1 e p2 para delegar comportamento.
  • Esse padrão às vezes é chamado de “em vez de herdar, componha”.

Passo 4

Quais as vantagens práticas desse encapsulamento/composição?
  1. Sem conflito de métodos: você controla exatamente qual objeto recebe cada chamada.
  2. Baixo acoplamento: a classe Filho só conhece a interface pública de Pai1 e Pai2, sem ficar presa a hierarquias rígidas.
  3. Flexibilidade: dá para trocar a implementação de Pai1 ou Pai2 por outra (desde que tenham a mesma interface) sem mexer em Filho.
  4. Reuso de código: você reutiliza comportamento de vários “componentes” sem precisar herdar de vários.

Passo 5

Resumindo a teoria aplicada:
  • Java não permite herança múltipla de classes justamente para evitar ambiguidade e acoplamento excessivo.
  • Encapsular objetos (composição) é a forma canônica de “reduzir” esse problema, reaproveitando funcionalidades sem herdar de duas fontes.

Resposta

É boa prática usar encapsulamento (composição de objetos) em Java porque a linguagem não permite herança múltipla de classes e essa técnica te deixa reutilizar código de várias classes de forma clara, evitando conflitos de método, reduzindo acoplamento e deixando o sistema mais flexível e fácil de manter.

Exercícios relacionados