Polimorfismo significa “muitas formas” e representa o fato de uma determinada característica ser diferente para “cada filho”.
Na programação orientada à objetos, o que acontece é que partimos de um objeto simples que vai evoluindo.
Dessa forma os conceitos do objeto pai continuam a existir, mesmo que tenha sofrido modificações ou assumindo novas formas.

Por exemplo, o diagrama acima pode ser representado da seguinte forma em C#:
public class Pessoa {
public virtual void Viajar() {
/* Ação */ }
}
public class Diretor : Pessoa {
public override void Viajar() {
base.Viajar();
/* Ações Particulares da Classe Diretor */
}
}
public class Vendedor : Pessoa {
public override void Viajar() {
base.Viajar();
/* Ações Particulares da Classe Vendedor */
}
}
As seguintes palavras-chave podem ser úteis para explorar o código acima:
- Abstract: Indica uma classe, método ou propriedade que não admite instâncias diretamente.
- Override: Indica uma redefinição em uma classe derivada.
- Virtual: Indica um elemento da classe base que pode ser redefinido.
- This: Indica um elemento da própria classe.
- Base: Indica um elemento da classe base.
- Sealed: Indica uma classe que não admite derivadas.
Links adicionais
- Uso de polimorfismo em Java
- Interfaces em C#
- Herança e Polimorfismo em C# (em inglês)
- Outros artigos: Programação em C#
