class Super {
public int getLength() {return 4;} 

public class Sub extends Super { 
public int getLength() {
return 5;

public static void main (String[]args) { 
Super sooper = new Super (); 
Super sub = new Sub(); 
System.out.println(sooper.getLength()+ "," + sub.getLength() ); 

}A. 4, 4 
B. 4, 5 
C. 5, 4 
D. 5, 5 
E. 代码不能被编译
楼下的分析下,选哪个,为什么?

解决方案 »

  1.   

    B,sooper new的是Super类的实例,所以调用Super的方法;sub是Sub的实例,Sub重写了getLength方法,所以sub调用的是Sub的方法
      

  2.   

    B 多态么~sooper.getLength();
    这个就不解释了 4sub.getLength() ;
    ---》Super sub = new Sub();
    父类引用子类对象,在执行中断定为使用子类方法。 
      

  3.   

    答案选择E,因为Super是关键字,编译器不能去解释它。我们在JAVA 基础中说关键字是不能作为类名
      

  4.   

    不要说我们,只说你。Super是大写。绝对可以正常编译
      

  5.   

    分析得很对,但这个题有小陷进——Super为关键字,而关键字是不能为类名的,所以正解应该是E
      

  6.   

    我是 JAVA新手
    事实证明答案是B 4,5
    学习中....
      

  7.   


     Super 和 super是有区别的。
    super是关键字;Super不是。
    出题人真实目的不是写了这么多,就为了考个关键字吧,真的那样也太考试化了,也只有大学才会做的,
    公司是不会这样的。