🧬 CAPÍTULO 13: HERANÇA E POLIMORFISMO
A Herança é o mecanismo onde uma classe "filha" herda automaticamente as características da classe "pai", permitindo a criação de sistemas modulares e a eliminação de redundância (DRY - Don't Repeat Yourself). 🛡️🧩
🎯 Objetivo do Capítulo
Dominar a hierarquia de classes, diferenciando Generalização de Especialização, e compreender como o Polimorfismo permite que objetos diferentes respondam à mesma chamada de formas distintas.
🏢 O Cenário Corporativo (TecProExpress)
Na TecProExpress, o sistema de funcionários está crescendo. Temos o Motorista, o Mecânico e o Gerente. Todos eles têm nome, CPF e data de admissão. Se você criar essas variáveis em todas as classes, terá 3 vezes o mesmo trabalho.
"Seu desafio como Arquiteto Sênior é criar a Superclasse
Funcionario. Nela, você colocará tudo o que é comum. As outras classes apenas 'estenderão' esse comportamento, focando apenas no que as torna únicas."
🧠 Hierarquia de Poderes no Java
| Termo UML | Papel na Arquitetura |
|---|---|
| Superclasse (Pai) | Onde moram os dados genéricos (Ex: Usuario). Contém o que é comum a todos. |
| Subclasse (Filha) | Onde moram as especialidades (Ex: Admin, Cliente). Herda o Pai e adiciona permissões. |
📊 Modelagem de Acesso
classDiagram
class Usuario {
+String email
+String senha
+fazerLogin()
}
class Admin {
+Integer nivelAcesso
+deletarUsuario()
}
class Cliente {
+String cartaoCredito
+comprarProduto()
}
Usuario <|-- Admin : extends
Usuario <|-- Cliente : extends
🔍 Generalização vs. Especialização
- Generalizar (Subir): Olhamos para as filhas e subimos para a classe Pai para remover repetições.
- Especializar (Descer): Olhamos para a classe Pai e descemos para as filhas para adicionar comportamentos específicos (ex: o Motorista tem CNH, mas o Atendente não).
[!TIP] Dica de Reuso: O Polimorfismo permite que você trate todos os objetos como se fossem o "Pai". Na TecProExpress, você pode ter uma lista de
Funcionariose rodar um comandopagarSalario()para todos, independente se eles são motoristas ou gerentes. O sistema saberá qual regra aplicar a cada um. 🚀
💡 Checkpoint de Lógica
[!IMPORTANT] Reflexão Profissional: Se você tem uma classe
Animale uma classeCachorroque herda dela, e percebe que precisa criar uma classeGato, você deve criar todos os atributos do zero ou herdar deAnimal? (Resposta: Herdar de Animal. A herança economiza linhas de código e garante que, se o nome de um animal mudar, mudará para todos). 🧠🛡️