Aula 05 - Classes Abstratas e Interfaces 🧩
Hoje vamos aprender como definir contratos e modelos incompletos para garantir a fluidez da nossa arquitetura.
😊 Classes Abstratas
Uma Classe Abstrata é uma classe que não pode ser instanciada diretamente. Ela serve apenas como um "rascunho" ou base para outras classes.
- Pode conter métodos com corpo (comuns).
- Pode conter métodos sem corpo (abstratos), que obrigam os filhos a implementarem.
📊 Exemplo: Forma Geométrica
classDiagram
Forma <|-- Circulo
Forma <|-- Quadrado
class Forma {
<<abstract>>
+String cor
+calcularArea()*
}
🧠 Interfaces
Uma Interface é um "contrato". Ela define o que uma classe deve fazer, mas não como fazer.
[!TIP] Use Interfaces quando quiser definir um comportamento comum a classes que não pertencem necessariamente à mesma hierarquia (ex:
Autenticavel).
🧠 Glossário Rápido
[!NOTE] Extends: Usado para herança (Classes). Implements: Usado para contratos (Interfaces).
📝 Exercícios Progressivos
- Básico: Posso criar um objeto de uma classe abstrata (
new ClasseAbstrata())? - Básico: Quantas interfaces uma classe Java pode implementar?
- Intermediário: Qual a principal diferença entre uma Classe Abstrata e uma Interface?
- Intermediário: Se eu tenho a interface
Voadorcom o métodovoar(), o que acontece se eu esquecer de implementar esse método na classePassaro? - Desafio: Crie um diagrama Mermaid para um sistema de pagamentos (
Pagamentoabstrato,CartaoeBoletocomo filhos).
🚀 Mini-projeto: Crie a classe abstrata Funcionario com o método abstrato calcularBonus(). Implemente as classes Gerente e Operador com cálculos diferentes.