2016-03-06 104 views
-3
class SuperClass{ 
    int num=10; 
} 

class SubClass extends SuperClass{ 
    int num=20; 
} 

public class TestClass{ 
    public static void main(String[] args){ 
     SuperClass s1 = new SuperClass(); 
     SuperClass s2 = new SubClass(); 
     System.out.println(s2.num); // displays 10 
    } 

}Java继承参考

对象s2是子类。它为什么显示10?

+0

因为成员变量不是多态的。 –

回答

0

您不能重写字段,只能使用方法。

当您在调试器中观看s2时,您会看到两个字段num。 一个来自子类的超类。

您可以在两个类中添加方法getNum(),其中一个返回10另一个20,然后调用它。 Tham它会按预期工作。