为什么父类的值是可变的显示为输出

时间:2017-08-03 17:28:32

标签: java dynamic-dispatch

我是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);
        }
    }

`

1 个答案:

答案 0 :(得分:-1)

在Java中无法覆盖变量,请看看另一个问题:

why instance variable of super class is not overridden in sub class method