Java:访问祖父母&x27;s州

Java:访问祖父母&x27;s州,java,inheritance,overriding,superclass,Java,Inheritance,Overriding,Superclass,我知道在Java中,尤其是在进行字段隐藏时,可以访问祖父母的状态变量: ((Grandparent) this).hiddenField 为什么方法调用的原理不同?您可以调用super.method(),为什么不调用其他祖先的呢?因为方法是虚拟的,而字段不是。 目标是调用相同的方法,而不考虑引用的类型: (祖父母)this.method()始终等于this.method()实例方法没有类似的字段隐藏。实例方法不同于实例字段或静态方法,它受动态调度的约束,这是一个完全不同的故事。从某种意义上说,

我知道在Java中,尤其是在进行字段隐藏时,可以访问祖父母的状态变量:

((Grandparent) this).hiddenField

为什么方法调用的原理不同?您可以调用super.method(),为什么不调用其他祖先的呢?

因为方法是虚拟的,而字段不是。 目标是调用相同的方法,而不考虑引用的类型:


(祖父母)this.method()
始终等于
this.method()

实例方法没有类似的字段隐藏。实例方法不同于实例字段或静态方法,它受动态调度的约束,这是一个完全不同的故事。从某种意义上说,被重写的方法不再“存在”,唯一的例外是在重写方法体中,只有被直接重写的方法。

uhm。。。您是否尝试过这个.Grandparent.method()?Grandparent是一个类名,它不是一个实例字段……我想您正在寻找