有没有办法跳过java继承层次和超超类的调用方法?
我在java中有3个类
X
Y extends X
Z extends Y.
现在有什么方法可以访问 X 直接跳过 Y 的任何方法吗?
有没有办法跳过java继承层次和超超类的调用方法?
我在java中有3个类
X
Y extends X
Z extends Y.
现在有什么方法可以访问 X 直接跳过 Y 的任何方法吗?
这里 为什么是 super.super.method(); 在 Java 中不允许? 他们声称您不能,并且对原因进行了很好的讨论。
编辑 我假设你有像 foo() 在 X 和 Y 中定义的情况,你想从 X 中的 Z 调用它
现在有什么方法可以访问 X 直接跳过 Y 的任何方法吗?
几乎没有,理论上是的。按照你的例子:
X
Y extends X
Z extends Y.
当你调用Z的一个方法时,它会调用super()
哪个会调用Y的方法,如果有的话它也会调用super()
,最后会调用X的方法。我说是的,当 Y 的方法与 X 的方法没有什么不同时,就好像它没有效果一样。但在实践中,JVM 遵循继承层次结构来完成调用,请记住这一点。
我想你可以使用反射 API,但它有点丑 IMO。
是的,您可以访问 X 的所有方法,除了私有方法