Questão nº 37
Questão de Tecnologia da Informação · CESGRANRIO BASA 01/2024 (nº 37)
No contexto de orientação a objeto, para as classes P, Q, R, S, T, U, sendo Q uma classe declarada como abstrata, considere a hierarquia de classes a seguir:
• U e R herdam diretamente de S
• S e T herdam diretamente de Q
• P herda de T
Nesse contexto, é possível criar uma instância de
- AP e associar a uma variável da classe S
- BQ e associar a uma variável da classe Q
- CQ e associar a uma variável da classe P
- DS e associar a uma variável da classe U
- EU e associar a uma variável da classe Q (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Conceito-chave: Em Java, uma classe abstrata não pode ser instanciada (não se usa new nela), mas uma variável de seu tipo pode referenciar qualquer objeto de uma subclasse concreta (não abstrata) que herde dela, direta ou indiretamente. O polimorfismo permite isso.
- (A) Incorreta: P herda de T, que herda de Q, mas S não está na linha de herança de P (P → T → Q; S é irmã de T, não ancestral). Logo, P não é um S.
- (B) Incorreta: Q é abstrata, então
new Q()é proibido. Não se pode criar instância de Q, nem associá-la a variável Q. - (C) Incorreta: Além de Q ser abstrata (não instanciável), a variável da classe P só poderia receber um objeto de P ou subclasse de P — um objeto Q não é um P (é superclasse).
- (D) Incorreta: S é abstrata (herda de Q, que é abstrata, e não é declarada concreta), então não se instancia S. Além disso, U herda de S, mas a variável U não pode receber um S (S é superclasse, não subclasse).
- (E) Correta: U é concreta (não abstrata) e herda de S, que herda de Q. Portanto,
U u = new U()é válido, e a variávelQ q = u;também é válida, pois U é um Q por transitividade.
Fonte: CESGRANRIO BASA 01/2024 Técnico Científico - Área de Formação: Tecnologia da Informação (Caderno Prova B). Reproduzida para fins de estudo.