📊 Capítulo 09: Herança & Polimorfismo
Especialização em Sistemas com Java
🗺️ O Despacho Dinâmico de Métodos (Dynamic Method Dispatch)
flowchart TD
BASE["Conta c = new ContaPoupanca(..., taxaJuros);\n(Tipo Estático: Conta / Tipo Dinâmico: ContaPoupanca)"]
--> CALL["c.sacar(100.0)"]
CALL --> JVM["JVM vtable Lookup (Tabela Virtual de Métodos)"]
JVM --> OVERRIDE["Executa a implementação de ContaPoupanca.sacar() em tempo de execução!\n(Polimorfismo puro!) ⚡"]
style BASE fill:#ede7f6,stroke:#512da8,stroke-width:2px
style CALL fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style JVM fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style OVERRIDE fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
🎯 Slide 1: Classes Abstratas (abstract class)
-
Não podem ser instanciadas diretamente com
new. - Podem conter métodos abstratos (forçando as subclasses a implementar) e métodos concretos reutilizáveis.
🎯 Slide 2: Anotação @Override
- Informa ao compilador que o método está sobrescrevendo um comportamento da superclasse. Se o nome ou os tipos dos parâmetros estiverem errados, o compilador emite erro imediato!
🎯 Slide 3: Palavra-Chave final
- Atributo
final: Constante imutável. - Método
final: Não pode ser sobrescrito por subclasses. - Classe
final: Não pode ser herdada (ex.: a classeStringéfinalpor razões de segurança!).
🔗 Navegação do Capítulo 09
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim