Polimorfismo

Polimorfismo é um dos princípios fundamentais da programação orientada a objetos (POO). Em Python, o polimorfismo permite que objetos de diferentes classes sejam tratados de maneira uniforme. Isso significa que, mesmo que diferentes classes possuam métodos com o mesmo nome, esses métodos podem ser chamados de maneira consistente. Neste tutorial, vamos explorar o polimorfismo em Python, incluindo o polimorfismo de método e o polimorfismo de classe.

1. Polimorfismo de Método:

O polimorfismo de método permite que diferentes classes tenham métodos com o mesmo nome, mas com comportamentos diferentes. Isso é alcançado sobrescrevendo métodos na classe filha.

class Animal:
    def fazer_som(self):
        pass

class Cachorro(Animal):
    def fazer_som(self):
        return "Woof!"

class Gato(Animal):
    def fazer_som(self):
        return "Meow!"

# Função para fazer os animais fazerem som
def fazer_som_animal(animal):
    return animal.fazer_som()

cachorro = Cachorro()
gato = Gato()

print(fazer_som_animal(cachorro))  # Saída: Woof!
print(fazer_som_animal(gato))  # Saída: Meow!

Neste exemplo, fazer_som_animal() pode chamar o método fazer_som() de diferentes classes (Cachorro e Gato) e obter resultados diferentes.

2. Polimorfismo de Classe:

O polimorfismo de classe permite que diferentes classes sejam tratadas como instâncias de uma classe comum. Isso é útil para criar classes que possam interagir de maneira uniforme, independentemente de sua implementação específica.

class Veiculo:
    def mover(self):
        pass

class Carro(Veiculo):
    def mover(self):
        return "Carro se movendo na estrada."

class Aviao(Veiculo):
    def mover(self):
        return "Avião voando no céu."

# Função para fazer veículos se moverem
def mover_veiculo(veiculo):
    return veiculo.mover()

carro = Carro()
aviao = Aviao()

print(mover_veiculo(carro))  # Saída: Carro se movendo na estrada.
print(mover_veiculo(aviao))  # Saída: Avião voando no céu.

Neste exemplo, mover_veiculo() pode chamar o método mover() de diferentes classes (Carro e Aviao) e obter comportamentos diferentes, mostrando o polimorfismo de classe em ação.

O polimorfismo em Python é uma técnica poderosa que permite que diferentes classes sejam tratadas de maneira uniforme. Seja ao utilizar o polimorfismo de método para chamar métodos com o mesmo nome de diferentes classes ou ao usar o polimorfismo de classe para tratar diferentes classes como instâncias de uma classe comum, o polimorfismo é fundamental para a flexibilidade e a reutilização de código na programação orientada a objetos.