Imagem de fundo

Em programação orientada a objetos com tipagem estática, considere uma hierarquia de ti...

Em programação orientada a objetos com tipagem estática, considere uma hierarquia de tipos em que:


1.Métodos podem ser sobrescritos (overriding ) em subclasses;

2.Métodos podem ser sobrecarregados (overloading) dentro de uma mesma classe ou escopo;

3.O sistema de tipos suporta covariância de retorno (o tipo de retorno pode ser mais específico na sobrescrita);

4.Não há suporte à contravariância em parâmetros de métodos sobrescritos (ou seja, a assinatura deve manter compatibilidade estrita nos parâmetros);

5.A resolução de sobrecarga ocorre em tempo de compilação, enquanto a sobrescrita utiliza despacho dinâmico (dynamic dispatch).


Analise as sentenças a seguir e assinale a alternativa correta:


A

A sobrecarga permite múltiplos métodos com o mesmo nome diferenciados por assinatura, sendo resolvida em tempo de compilação, enquanto a sobrescrita mantém a mesma assinatura (com possível covariância no retorno) e é resolvida em tempo de execução.


B

A sobrecarga e a sobrescrita são ambas resolvidas em tempo de execução, uma vez que o sistema de tipos precisa inspecionar o tipo dinâmico dos objetos envolvidos para selecionar a implementação mais adequada, sendo diferenciadas apenas pelo fato de a sobrescrita ocorrer em hierarquias de herança.


C

Na sobrescrita, a escolha do método é feita em tempo de compilação com base no tipo estático da referência, enquanto na sobrecarga a decisão depende do tipo dinâmico dos argumentos fornecidos em tempo de execução, especialmente em cenários com herança e múltiplas implementações possíveis.


D

A sobrecarga exige que os métodos possuam tipos de retorno covariantes para permitir distinção entre assinaturas semelhantes, enquanto a sobrescrita admite variação nos parâmetros desde que haja compatibilidade estrutural e semântica entre os métodos envolvidos.


E

Na sobrescrita, é permitido alterar os tipos dos parâmetros de forma contravariante, desde que o sistema de tipos consiga garantir substituibilidade em tempo de execução, mantendo o tipo de retorno idêntico ao da superclasse para preservar a consistência da chamada.