Em Java,
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: E
Esta questão aborda conceitos fundamentais da programação orientada a objetos em Java, e para resolvê-la é necessário entender como o Java gerencia objetos, define classes, estabelece heranças, e como o polimorfismo funciona no contexto dessa linguagem.
Para a alternativa E, que é a correta, é necessário compreender o que significa ligação tardia (também conhecida como late binding ou dynamic binding). Em Java, a maior parte das determinações de métodos a executar é feita em tempo de execução, ou seja, o método específico a ser executado será determinado com base no objeto real que está sendo referenciado em tempo de execução, e não apenas pelo tipo de referência em tempo de compilação. Isso permite que um método sobreposto (override) em uma subclasse seja chamado mesmo quando a referência é do tipo da superclasse, caracterizando a ligação tardia e permitindo polimorfismo.
Este conceito é fundamental na programação orientada a objetos, pois permite que o mesmo código possa operar com diferentes tipos de objetos que compartilham a mesma interface (ou seja, métodos com a mesma assinatura), mas possuem implementações específicas.
Portanto, a alternativa E está correta, pois reflete adequadamente o mecanismo de polimorfismo por meio do conceito de ligação tardia presente na linguagem Java.
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
Opção E
Quando o método a ser invocado é definido durante a compilação do programa, o mecanismo de ligação prematura (early binding) é utilizado.
Para a utilização de polimorfismo, a linguagem de programação orientada a objetos deve suportar o conceito de ligação tardia (late binding), onde a definição do método que será efetivamente invocado só ocorre durante a execução do programa. O mecanismo de ligação tardia também é conhecido pelos termosdynamic binding ou run-time binding.
Em Java, todas as determinações de métodos a executar ocorrem através de ligação tardia exceto em dois casos:
- métodos declarados como final não podem ser redefinidos e portanto não são passíveis de invocação polimórfica da parte de seus descendentes; e
- métodos declarados como private são implicitamente finais.
Uma sutil diferença.
a) é possível criar e manipular objetos, mas não removê-los, pois a remoção é manipulada automaticamente pelo sistema.
A única maneira que conheço são colocar uma referência como null ( meuObjeto=null;).
Isto apenas torna o objeto qualificado para remoção, não o remove, que faz isso é o garbage colector. Fazer isto não garante que o objeto será removido.
E chamar explicitamente o garbage colector não garante que ele será executado e muito menos que o objeto será removido.
E o que está errado em:
d) construtores da superclasse podem ser explicita- mente invocados usando a palavra-chave super
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo