Próximas questões
Com base no mesmo assunto
Q111593 Programação
Em Java,

Alternativas

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:

  1. 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
  2. métodos declarados como private são implicitamente finais.
fonte:http://www.dca.fee.unicamp.br/cursos/PooJava/polimorf/latebind.html

A letra C está errada pois não é no momento da criação (instanciação) e sim no momento da definição da classe.
Uma sutil diferença.
    O que está errado em:
    
    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
   
Tenho as mesmas dúvidas do Bruno.
Estou achando que essa questao pediu a incorrera.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo