Fala, meus consagrados! Beleza?
Polimorfismo é um conceito fundamental na programação orientada a objetos, que permite que diferentes classes tratem da mesma interface ou método de maneira distinta. No contexto de Python, o polimorfismo se manifesta na capacidade de funções ou métodos de operar em objetos de diferentes tipos, desde que esses objetos implementem métodos ou atributos esperados.
Python suporta o polimorfismo e, como exemplo, iremos estudar três classes, conforme a figura 1: superclasse Pessoa e subclasses Aluno e Professor e vamos trabalhar a sobrescrita do método saudacao().
Figura 1: Superclasse Pessoa e subclasses Aluno e Professor.
Exemplo:
No exemplo acima, temos a superclasse Pessoa com um atributo de instância nome e um método de instância saudacao(). Tanto a subclasse Aluno quanto a subclasse Professor herdaram o método e sobrescreveram. Cada uma dando uma implementação específica, de acordo com sua classe.
Na linha 15, a variável zé apontou para um objeto da classe Pessoa. A partir da variável, acessamos o método saudacao() (linha 16) e foi retornado “Sou uma pessoa e meu nome é José Gildo Araújo”.
Na linha 18, criamos uma variável kalel, apontando para uma instância da subclasse Aluno. Acessamos o método sobrescrito saudacao() (linha 19) e o retorno foi “Sou um aluno e meu nome é Kal-El Gildo Araújo”.
Já na linha 21, há a variável rogerio que guarda o objeto da classe Professor. Na linha 22, acessamos o método sobrescrito saudacao() e o retorno é “Sou um professor e meu nome é Rogério Gildo Araújo”.
Notem que a mesma mensagem (saudacao()) foi respondida de forma diferente, dependendo da superclasse e das suas subclasses.
Como mais um exemplo de polimorfismo, vamos usar o exemplo da superclasse Carro e sua subclasse Fusca, que foram cobradas em uma questão na seção 3.2.1.
Exemplo:
A superclasse Carro possui um método de instância (FaleComigo()). A subclasse Fusca, por sua vez, herdou esse método e o sobrescreveu. Além disso, a subclasse possui um método de instância específico (FaleComUmFusca()).
Na linha 12, temos a variável x que apontou para um objeto da superclasse Carro. Na linha 13, a variável y apontou para um objeto da subclasse Fusca.
Na linha 15, acionamos o método de instância FaleComigo() do objeto apontado pela variável x, então foi impresso “Sou um carro”.
Na linha 16, acionamos o método sobrescrito FaleComigo() do objeto apontado pela variável y, então foi impresso “FaleComigo: Sou um Fusca”. Já na linha 17, traz o método de instância FaleComUmFusca() do objeto apontado pela variável y, imprimindo o texto “FaleComUmFusca: Sou um Fusca”.
Espero que tenham gostado!
Forte abraço e até a próxima jornada!
_________________________
Professor Rogerão Araújo
Quer ficar por dentro dos concursos públicos abertos e previstos pelo Brasil?
clique nos links abaixo:
Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
clique no link abaixo e inscreva-se gratuitamente: