Questão 183 testKiller (resposta errada)

boom dia galera, venho aqui só pra esclarecer uma questão do testKiller para a certificação OCJP 1.6, e para saber se minha conclusão está certa e se existe algo a ser acrescentado.

abaixo o código da questão:


package br.com.ocjp;

public class SuperClasseDaQuestao183 {

	String getText(){
		return "text";
	}
}

package br.com.ocjp2;

public class Questao183 extends br.com.ocjp.SuperClasseDaQuestao183{

	String getText(){
		return "<msg>text</msg>";
	}
	
	public static void main(String[] args) {

		System.out.println(new Questao183().getText());
	}
}

a resposta sugerida no test é:
B . Compilation fails

mas o correto seria:
C . text

por que? pergunta interessante, primeiro, sabemos que não podemos sobrescrever métodos com o modificado padrão a partir de uma classe de outro pacote por que não herdamos esse método. Segundo, observe que não temos a instrução import por isso devemos usar o nome totalmente qualificado da classe para usa-lá na sub Classe. Terceiro, como não herdamos o método nada nos impede de criar um método como mesmo nome pois minha sub classe não sabe sobre a existência do método da Super Classe, o que não poderíamos fazer é uma declaração polimórfica e chamarmos esse método, exemplo:

SuperClasseDaQuestao183 a = new Questao183();
a.getText();

por que não Fábio? rapazinho curioso vc né… bom, o motivo é que em tempo de compilação a JVM enxerga o método do tipo da variável de referência e não o do tipo do Objeto, o que acontece somente em tempo de execução, e nesse caso o método getText() da super classe não é visível de outro pacote.

É isso galera, agradeceria de verdade se eu recebesse um feedback sobre o que escrevi acima.