我是java的新手,正在阅读有关动态调度的内容。我尝试了它的程序,但我得到的输出是出乎意料的。因此,在下面的代码中,我创建了两个类,一个Parent和另一个Child,在Child类中,我创建了Child类的对象,并通过Parent类的变量引用它。当我使用该变量来打印i的值(两个类的int类型实例变量)时,我得到了父类的值,但是它应该打印子类中的i的值。有人可以清楚说明吗?
`
class Parent
{
int i=10;
}
class Child extends Parent
{
int i=20;
public static void main(String ar[])
{
Parent obj= new Child();
System.out.println(obj.i);
}
}
`
答案 0 :(得分:-1)
在Java中无法覆盖变量,请看看另一个问题:
why instance variable of super class is not overridden in sub class method