A palavra polimorfismo vem do grego:
- "poli" = muitos
- "morfismo" = formas
Ou seja, um mesmo método pode ter diferentes formas de comportamento, dependendo do contexto.
No C#, isso é um pilar da Programação Orientada a Objetos (POO) junto com:
- Encapsulamento
- Herança
- Abstração
Tipos de Polimorfismo em C#
No C# temos dois principais:
1. Polimorfismo de Sobrecarga (Overloading)
Acontece na mesma classe quando temos métodos com o mesmo nome, mas parâmetros diferentes.
Exemplo:

O método Somar
tem várias formas (diferentes assinaturas).
Polimorfismo de Sobrescrita (Overriding)
Acontece com herança, quando uma classe filha redefine um método da classe pai.
Isso é feito com as palavras-chave virtual
(na classe base) e override
(na classe derivada).
Exemplo:

Aqui, mesmo chamando o mesmo método Falar()
, o comportamento muda dependendo do objeto (Cachorro
ou Gato
).
Resumindo:
Polimorfismo = mesma interface (mesmo nome de método), mas com comportamentos diferentes.
Em C# temos:
Sobrecarga (Overloading) → Vários métodos com o mesmo nome, mas assinaturas diferentes.
Sobrescrita (Overriding) → Uma classe filha pode redefinir o método da classe pai.