【问题标题】:Java: accessing grandparent's stateJava:访问祖父母的状态
【发布时间】:2012-04-26 15:08:44
【问题描述】:

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

((Grandparent) this).hiddenField

为什么方法调用的理由不一样?你可以调用 super.method(),为什么不能调用其他祖先的呢?

【问题讨论】:

标签: java inheritance overriding superclass


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-11
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 2018-03-19
      • 1970-01-01
      • 2018-01-13
      相关资源
      最近更新 更多