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

Java 为什么父类的值是变量显示为输出,java,dynamic-dispatch,Java,Dynamic Dispatch,我是java新手,读过关于动态调度的书。我尝试了它的程序,但得到的结果出乎意料。因此,在下面的代码中,我创建了两个类,一个是父类,另一个是子类,在子类中,我创建了Child类的对象,并通过类型为Parent class的变量引用它。当我使用该变量打印两个类的iint类型实例变量的值时,我得到了父类的值,但它应该打印子类中的I的值。谁能把这件事弄清楚吗 ` class Parent { int i=10; } class Child extends

我是java新手,读过关于动态调度的书。我尝试了它的程序,但得到的结果出乎意料。因此,在下面的代码中,我创建了两个类,一个是父类,另一个是子类,在子类中,我创建了Child类的对象,并通过类型为Parent class的变量引用它。当我使用该变量打印两个类的iint类型实例变量的值时,我得到了父类的值,但它应该打印子类中的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);
        }
    }

`

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


正常,如果行父对象=新子对象,则打印父值;已更改为行Child obj=新子对象;根据我的测试,它可以打印20张。但它背后的原因是什么