0

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

((Grandparent) this).hiddenField

为什么方法调用的情况并非如此?你可以调用 super.method(),为什么不能调用其他祖先的呢?

4

2 回答 2

1

因为方法是虚拟的,而字段不是。目标是无论引用类型如何都调用相同的方法:

(Grandparent) this).method()总是等于this.method()

于 2012-04-14T15:40:10.160 回答
1

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

于 2012-04-14T15:41:23.640 回答