Acerca do conceito de polimorfismo na orientação a objetos,...

Próximas questões
Com base no mesmo assunto
Q762234 Engenharia de Software
Acerca do conceito de polimorfismo na orientação a objetos, analise as afirmações abaixo. 1) No polimorfismo de nome ou de sobrecarga (overloading) a decisão do método a ser chamado é tomada em tempo de execução. 2) Com o polimorfismo, um objeto pode ser referenciado de várias formas distintas. 3) No polimorfismo dinâmico ou de sobrescrita (overriding) os métodos têm nome e assinatura, e na subclasse se redefine um método da superclasse. A decisão do método a ser chamado é tomada em tempo de execução. 4) Nas linguagens orientadas a objetos é comum encontrar três formas de polimorfismo: ad hoc (como a sobrecarga de operadores), paramétrico (sobrecarga de nome com assinaturas diferentes) e de herança (reescrita de método). Estão corretas:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: B - 2, 3 e 4, apenas.

Ao abordarmos o tema do polimorfismo na orientação a objetos, devemos compreender que se trata da capacidade de um método ser implementado de diferentes formas em classes que estão numa relação de herança. É um conceito fundamental para o reuso e a extensibilidade do código.

Justificativa para a alternativa B ser a correta:

O item 2) Com o polimorfismo, um objeto pode ser referenciado de várias formas distintas está correto pois é uma definição exata do polimorfismo. Um objeto de uma subclasse pode ser referenciado como se fosse um objeto da superclasse, permitindo uma flexibilidade no tratamento dos objetos.

O item 3) No polimorfismo dinâmico ou de sobrescrita (overriding) os métodos têm nome e assinatura, e na subclasse se redefine um método da superclasse. A decisão do método a ser chamado é tomada em tempo de execução está correto. Ele descreve o overriding corretamente, onde métodos redefinidos são escolhidos em tempo de execução com base no tipo do objeto e não no tipo de referência. Isso permite que o mesmo método possa ter comportamentos diferentes, dependendo do objeto que o invoca.

O item 4) Nas linguagens orientadas a objetos é comum encontrar três formas de polimorfismo: ad hoc (como a sobrecarga de operadores), paramétrico (sobrecarga de nome com assinaturas diferentes) e de herança (reescrita de método) está correto e menciona três categorias de polimorfismo reconhecidas. A sobrecarga de operadores e métodos (ad hoc), a generalização por meio de tipos genéricos (paramétrico), e a especialização por meio de herança que permite a redefinição de comportamentos (polimorfismo de herança).

O item 1) está incorreto pois no polimorfismo de sobrecarga (overloading), a decisão sobre qual versão do método a ser chamado é feita em tempo de compilação, não em tempo de execução. Portanto, a decisão é estática e baseada na assinatura dos métodos, o que difere do polimorfismo de sobrescrita (overriding), que é dinâmico e ocorre em tempo de execução.

Portanto, a alternativa B é a correta, pois apenas os itens 2, 3 e 4 estão corretos.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Polimorfismo de nome/Estático/Sobrecarga (Overloading)     --->  A decisão é tomada em tempo de COMPILAÇÃO, já que o próprio compilador identifica, por meio da assinatura diferente, qual método chamar.

Isso não é possível no Polimorfismo Dinâmico/Sobrescrita (Overriding), pois a assinatura é idêntica, sendo necessário decidir qual método será chamado em tempo de execução.

Oi?

Alguém poderia explicar por gentileza, qual é a relação de (Sobrecarga de nome com assinaturas diferentes)/(Polimorfismo paramétrico)

b-

overriding - rruntime

overloading - compile time

"Polimorfismo Paramétrico" é apenas outro termo para "genéricos" em Java. A ideia é simples: você declara que tipos serão parametrizados por outros tipos. Um exemplo disso são as collections do pacote java.util.

Quando se declara um ArrayList é necessário definir o seu tipo. No exemplo abaixo temos um ArrayList do tipo Animal.

Collection<Animal> animals = new ArrayList<Animal>();

Fonte: https://stackoverflow.com/questions/10179449/what-is-parametric-polymorphism-in-java-with-example

Deus ajuda quem senta e estuda!

No polimorfismo de nome ou de sobrecarga (overloading) a decisão do método a ser chamado é tomada em tempo de compilação, pela diferença na assinatura.

Elimina a 1 e corre pro abraço.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo