Question 193
Given classes defined in two different files:
1. package packageA;
2. public class Message {
3. String getText() { return ?text?; }
4. }
and:
1. package packageB;
2. public class XMLMessage extends packageA.Message {
3. String getText() { return ?<msg>text</msg>?; }
4. public static void main(String[] args) {
5. System.out.println(new XMLMessage().getText());
6. }
7. }
What is the result of executing XMLMessage.main?
A. text
B. <msg>text</msg>
C. An exception is thrown at runtime.
D. Compilation fails because of an error in line 2 of XMLMessage.
E. Compilation fails because of an error in line 3 of XMLMessage.
Answer: E
Para mim a resposta seria B.
Tudo bem eu sei que o método tem acesso friendly e por isso ele é restrito apenas ao pacote e nao pode ser utilizado nem mesmo pela herança.
A classe XMLMessage estende a classe Message, o método por sua vez NÃO é herdado por causa do modificador friendly.
A classe XMLMessage simplemente escreve um método com o mesmo nome do método da classe Message, esse método NÃO é uma sobrescrição válida mas ele NÃO gera um erro de compilação, ele simplesmente não sobrescreve o método de Message, é um outro método totalmente independente.
Isso que eu acabei de escrever está certo ou errado?