题目如下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.
答案:E 
可是我怎么看答案都是B阿?line 3哪里错了?

解决方案 »

  1.   

    </msg>
    I guess...
      

  2.   

    方法不是public的,不在一个包里的子类不能覆盖。
      

  3.   

    这道题并没有错误,考察的是方法的重写(覆盖)问题,运行程序后,控制台输出"<msg>text</msg>"。
      

  4.   

    楼上的说的不对,"<msg>text</msg>"还是一个字符串而已。
      

  5.   


    可是没必要覆盖阿,这里只是考察一下语法吧,完全可以认为是XMLMessage中的getText()方法和Message中的getText()是相互独立的
      

  6.   

    额,运行了一下,结果是<msg>text</msg>
      

  7.   

    extends packageA.Message{...} 
    改成 extends A.Message {...}
    就对了