我在Java中知道,尤其是当您进行字段隐藏时,您可以访问祖父母的状态变量:
((Grandparent) this).hiddenField
为什么方法调用的理由不同?你可以打电话给super.method(),为什么不是其他的祖先呢?
答案 0 :(得分:1)
因为方法是虚拟的,而字段不是。 无论引用类型如何,目标都是调用相同的方法:
(Grandparent) this).method()
始终等于this.method()
。
答案 1 :(得分:1)
对于实例方法,没有字段隐藏模拟。与实例字段或静态方法不同,实例方法受动态调度的影响,这是一个完全不同的故事。从某种意义上说,重写的方法不再是“存在”,唯一的例外是在重写方法体内,并且只有方法被直接覆盖。