Polimorfismo

Em OOP, o termo polimorfismo diz respeito ao uso de uma interface única para operar sobre objetos de classes distintas.

Existem basicamente dois recursos para se implementar polimorfismo: herança e sobrecarga. A seguir aprenderemos como criar objetos polimorficos em Python usando cada um desses dois recursos.

Herança e Polimorfismo

Para implementar polimorfismo, é essencial que objetos de classes distintas implementem uma mesma interface. Para obter isso usando herança, podemos fazer o seguinte:

  • Criar uma classe base com uma interface específica.

  • Criar classes derivadas que implementam essa interface de formas diferentes.

Vamos usar um exemplo para ilustrar este processo. Suponha que tenhamos uma classe Animal, cuja interface consiste de um único método, chamado locomove, que indica como o animal se move. Podemos implementar essa classe como no exemplo abaixo:

class Animal:
    def __init__(self):
        pass

    def locomove(self):
        pass

Agora, desejamos criar classes derivadas da classe Animal que implementam o método locomove de formas diferentes. Um modo de fazer isso é o mostrado no exemplo abaixo:

class Peixe(Animal):

    def locomove(self):
        print("Um peixe nada.")


class Elefante(Animal):

    def locomove(self):
        print("Um elefante anda.")


class Passaro(Animal):

    def locomove(self):
        print("Um pássaro voa.")

Com isso, dependendo do tipo de animal com o qual estivermos lidando, o método locomove apresentará um comportamento diferente. Por exemplo, considere o código abaixo, no qual invocamos o método locomove para diferentes tipos de animais:

peixe = Peixe()
elefante = Elefante()
passaro = Passaro()

peixe.locomove()
elefante.locomove()
passaro.locomove()
Um peixe nada.
Um elefante anda.
Um pássaro voa.

Note que, ao usar herança da forma mostrada acima, podemos implementar uma interface específica (o método locomove, por exemplo) usando objetos de classes distintas, ou seja, estamos implementando polimorfismo.

A seguir, mostraremos como implementar polimorfismo usando sobrecarga de operadores.

Sobrecarga de Operadores e Polimorfismo

EM BREVE…​

  • Rational

  • Lista circular

Playground

# Use este espaço para praticar o que você aprendeu nesta seção. # Basta digitar o código no espaço abaixo e clicar 'run'.