Java:访问祖父母的状态

时间:2012-04-14 15:06:36

标签: java inheritance override superclass

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

((Grandparent) this).hiddenField

为什么方法调用的理由不同?你可以打电话给super.method(),为什么不是其他的祖先呢?

2 个答案:

答案 0 :(得分:1)

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

(Grandparent) this).method()始终等于this.method()

答案 1 :(得分:1)

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