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.
fonte:http://www.dca.fee.unicamp.br/cursos/PooJava/polimorf/latebind.html
a) [correto] você pode remover a referência a um objeto atribuindo `null` a ele, no entanto sua alocação de memória só será liberada pelo garbage collector;
b) [correto] os identificadores para criação de classe devem iniciar com 'letras Java' que são quase qualquer caractere unicode menos dígitos 0 a 9, não devem ser palavras-chave (`protected`, `void`, `super`, ...), ou os identificadores de valor `null`, `true` e `false`;
c) [correto] o pacote `java.lang` implementa a classe `Object` que define o comportamento comum de todas as classes;
d) [correto] a palavra-chave `super` é referência padrão à superclasse, e pode ser utilizada para invocar seus construtores e métodos;
e) [errado] todas os métodos são compilados em 'late binding', exceto métodos com modificador `final` e `private` que precisam utilizar 'early binding' para inclusão de referência em tabela virtual, já que o compilador precisa saber se o identificador já foi utilizado ou não e em qual escopo.
Assim vejo que o enunciado está incompleto, já que deve pedir a questão incorreta.