2012-04-14 86 views
0

我知道在Java中,尤其是当你做实地隐藏,你可以访问祖父母的状态变量:的Java:访问祖父母的状态

((Grandparent) this).hiddenField 

为什么同样的理由不是方法调用的情况下?你可以调用super.method(),为什么不是其他祖先的呢?

+1

呃...你有没有试过这个.Grandparent.method()? – j13r 2012-04-14 15:10:41

+0

祖父母是一个类名,它不是一个实例字段... – Bober02 2012-04-14 15:20:12

+0

我认为你正在寻找http://stackoverflow.com/questions/586363/why-is-super-super-method-not-allowed-in -java – j13r 2012-04-14 15:33:11

回答

1

实例方法没有字段隐藏的类比。实例方法与实例字段或静态方法不同,它们可以动态调度,这是一个完全不同的故事。从某种意义上讲,重写的方法不再是“那里”,唯一的例外是在重写的方法体内,并且只有方法被直接覆盖。

1

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

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