Imagem de fundo

Em sistemas baseados em programação orientada a objetos, o polimorfismo de inclusão (su...

Em sistemas baseados em programação orientada a objetos, o polimorfismo de inclusão (subtipagem) permite que uma referência tipada por uma superclasse ou interface seja associada, em tempo de execução, a instâncias de diferentes tipos concretos pertencentes à mesma hierarquia. Considere um cenário em que:


*Há uma hierarquia de tipos com sobrescrita de métodos (overriding);

*As chamadas de métodos são realizadas por meio de referências da superclasse;

*O mecanismo de despacho de métodos seleciona a implementação com base no tipo dinâmico do objeto;

*Não há uso de métodos estáticos, nem ocultação de métodos (method hiding);

*O comportamento de vinculação tardia (late binding) está corretamente implementado.


A esse respeito, assinale a alternativa correta:


A

O mecanismo descrito caracteriza despacho dinâmico (dynamic dispatch), no qual a implementação invocada é determinada em tempo de execução com base no tipo concreto do objeto, assegurando o polimorfismo por subtipagem.


B

A seleção do método a ser executado ocorre em tempo de compilação com base no tipo estático da referência, caracterizando static binding e garantindo polimorfismo de inclusão.


C

O comportamento descrito depende da utilização de polimorfismo paramétrico (parametric polymorphism), no qual tipos genéricos são definidos em tempo de compilação, sendo necessário que o compilador determine previamente as instâncias de tipos concretos para permitir a seleção dinâmica de métodos.


D

A resolução do método depende da presença de sobrecarga de métodos (overloading), em que múltiplas versões de um mesmo método são definidas com assinaturas diferentes, sendo a escolha realizada em tempo de compilação com base nos tipos dos argumentos fornecidos.


E

A ausência de métodos estáticos impede a ocorrência de polimorfismo, pois a vinculação dinâmica exige que os métodos sejam resolvidos antecipadamente pelo compilador para que possam ser corretamente associados às chamadas em tempo de execução.