1. Herança: A Relação "É-Um"
No C#, usamos o símbolo : para indicar herança. Uma classe derivada herda tudo da classe base (exceto construtores privados e membros selados).
2. Polimorfismo: Virtual e Override
O polimorfismo permite que a classe base declare um método como virtual, autorizando as filhas a darem sua própria versão (override).
3. Classes Abstratas: O Contrato Final
Às vezes, você não quer que ninguém crie um objeto "Animal", porque "Animal" é vago demais. Você usa abstract para forçar a herança.
4. Análise Técnica: Flexibilidade
Como desenvolvedor, você deve saber quando usar cada ferramenta de POO. Veja a comparação de impacto arquitetural:
5. Lab: A Orquestra de Animais
Neste desafio, criaremos uma lista de Animais. Note como percorremos a lista e cada um faz seu próprio som, mesmo sendo tratados como o tipo genérico Animal.
Program.cs - O Poder do Polimorfismo
List<Animal> lista = new List<Animal>();
lista.Add(new Cachorro());
lista.Add(new Gato());
foreach (var animal in lista)
{
// O C# decide em tempo de execução qual som fazer
animal.FazerSom();
}
Console Output
> dotnet run
Au Au! (Vindo do Cachorro)
Miau! (Vindo do Gato)