Polimorfismo, Interfaces, Classes Abstractas
From Wiki**3
Vários aspectos de polimorfismo:
- Polimorfismo e tipos primitivos
- Polimorfismo e tipos compostos (classes).
- Herança e polimorfismo: upcasting e downcasting.
- Definição de métodos: overloading vs. overriding
- Selecção do método a invocar:
- early binding -- o método a invocar é conhecido em tempo de compilação (e.g., final em Java e não-virtual em C++)
- late binding -- o método a invocar é apenas conhecido em tempo de execução (habitual em Java; única possibilidade em PHP e outras linguagens semelhantes; e métodos declarados com virtual em C++)
comparação com outras linguagens
Interfaces
- Princípios e propriedades
- Separação de interface e implementação
Classes Abstractas
- Noção de classe abstracta
- Propriedades
- Polimorfismo e classes abstractas
- Discussão de aspectos problemáticos
- Contraste com interfaces
Exemplos e Exercícios
Exemplos
- Exemplo simples:
Animal
,Mamífero
,Gato
- Exemplo com vector.
- Exemplos Simples em Java e C++ (classes virtuais puras)
- Exemplo completo em Java:
Cão
,Vigilante
,CãoDeGuarda
,CãoPastor
,Chihuahua
,Robot
,XP
,XP2003