No contexto de orientação a objeto, para as classes P, Q, R,...
• 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
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta para a questão é a E.
Para entender essa questão, é importante compreender o conceito de herança e classes abstratas na Programação Orientada a Objetos (POO). Na hierarquia apresentada, temos várias classes com relações de herança entre elas, onde a classe Q é declarada como abstrata. Isso significa que Q não pode ser instanciada diretamente, ou seja, não é possível criar objetos diretamente dessa classe.
Vamos analisar cada alternativa:
A - Não é possível criar uma instância da classe P e associá-la a uma variável da classe S. Isso ocorre porque a classe P é uma classe derivada de T, que por sua vez é derivada de Q, não sendo parte da hierarquia direta da classe S.
B - Não podemos criar uma instância da classe Q porque ela é declarada como abstrata, e classes abstratas não podem ser instanciadas.
C - Novamente, não podemos instanciar a classe Q devido à sua natureza abstrata, e uma variável da classe P não é compatível diretamente com Q.
D - Não há informação suficiente que permita associar uma instância de S a uma variável da classe U, dado que U herda de S, e nesse tipo de relacionamento a conversão não é direta e simples.
E - Essa é a alternativa correta. Podemos criar uma instância da classe U, que herda de S, e associá-la a uma variável da classe Q. Isso é permitido porque U está na cadeia de herança de Q por meio de S, que herda diretamente de Q. Essa relação respeita a hierarquia de herança.
Compreender a estrutura de herança e a natureza das classes abstratas é essencial para resolver questões como esta, que testam o entendimento das relações entre classes em POO.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
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
Para resolver essa questão, deve-se saber que em herança, todo objeto da subclasse é também um objeto da superclasse, mas o inverso não acontece.
Ex: superclasse Pessoa e subclasse Aluno.
Todo Aluno é uma Pessoa.
Superclasse (Subclasses)
S (U, R)
Q (S, T)
T (P)
Sabemos que Q é uma classe abstrata e não se instancia nada abstrato. Então eliminamos B, C.
Criar uma instância de P e associar a uma variável da classe S não é possível já que P é subclasse de T e T é subclasse de Q.
Criar uma instância de S e associar a uma variável da classe U também não é possível já que S é uma superclasse e não é possível uma superclasse referenciar uma subclasse; porém, é possível a subclasse referenciar uma superclasse. É o caso da alternativa E, onde a subclasse U associa-se a uma variável da classe Q já que S é subclasse de Q e U é subclasse de S.
Gabarito: E
Bem, na alternativas mesmo, dar para notar que a A, C e D são alternativas com conceitos iguais, mas mudando as letras, então já se descartar. No caso, desenhando a árvore no papel, percebi que a questão queria o conceito toda sub-classe é também um objeto da superclasse, mas nem toda superclasse é um objeto da sub-classe
➡ Q é uma classe abstrata, então não pode ser instanciada diretamente.
➡ Classes abstratas servem como base para outras classes, mas não podem ser usadas para criar objetos.
➡ Podemos atribuir uma instância de uma subclasse a uma variável de uma superclasse devido ao polimorfismo.
Agora, analisemos as alternativas:
❌ A) P e associar a uma variável da classe S
Errado, pois P herda de T, que herda de Q. P não tem nenhuma relação direta ou indireta com S.
❌ B) Q e associar a uma variável da classe Q
Errado, pois Q é abstrata e não pode ser instanciada.
❌ C) Q e associar a uma variável da classe P
Errado pelo mesmo motivo da alternativa B: não é possível instanciar Q.
❌ D) S e associar a uma variável da classe U
Errado, pois S é uma superclasse de U. Não é possível atribuir uma instância de S a uma variável de U, pois estaríamos tentando "reduzir" uma classe mais geral para uma mais específica, o que não é permitido sem conversão explícita (casting, que pode falhar).
✅ E) U e associar a uma variável da classe Q
Correto! Como U herda de S, que herda de Q, então U pode ser associada a uma variável do tipo Q devido ao polimorfismo.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo