2

有没有办法跳过java继承层次和超超类的调用方法?

我在java中有3个类

X
Y extends X
Z extends Y.

现在有什么方法可以访问 X 直接跳过 Y 的任何方法吗?

4

4 回答 4

3

这里 为什么是 super.super.method(); 在 Java 中不允许? 他们声称您不能,并且对原因进行了很好的讨论。

编辑 我假设你有像 foo() 在 X 和 Y 中定义的情况,你想从 X 中的 Z 调用它

于 2013-06-27T12:13:11.003 回答
2

现在有什么方法可以访问 X 直接跳过 Y 的任何方法吗?

几乎没有,理论上是的。按照你的例子:

X
Y extends X
Z extends Y.

当你调用Z的一个方法时,它会调用super()哪个会调用Y的方法,如果有的话它也会调用super(),最后会调用X的方法。我说是的,当 Y 的方法与 X 的方法没有什么不同时,就好像它没有效果一样。但在实践中,JVM 遵循继承层次结构来完成调用,请记住这一点。

于 2013-06-27T12:15:02.317 回答
1

我想你可以使用反射 API,但它有点丑 IMO。

于 2013-06-27T12:19:45.030 回答
0

是的,您可以访问 X 的所有方法,除了私有方法

于 2013-06-27T12:13:12.203 回答