2016-03-06 120 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它會按預期工作。