有没有办法跳过java继承层次结构和超级超类的调用方法?
我在java中有3个类
X
Y extends X
Z extends Y.
现在有没有办法直接跳过Y来访问X的任何方法?
答案 0 :(得分:3)
下面 Why is super.super.method(); not allowed in Java? 他们声称你不能,并且有一个很好的讨论原因。
修改强> 我假设你有类似foo()的情况在X和Y中定义,你想从Z中的X调用它
答案 1 :(得分:2)
现在有没有办法直接跳过Y来访问X的任何方法?
实际上没有,理论上是的。按照你的例子:
X
Y extends X
Z extends Y.
当你调用Z的方法时,它会调用super()
,如果有的话会调用Y的方法,它也会调用super()
,最后会调用X的方法。我说是的,当Y的方法与X没什么不同时,那就好像它没有效果。但实际上,JVM遵循继承层次结构来完成调用,请记住。
答案 2 :(得分:1)
我猜你可以使用reflection API,但这有点丑陋的IMO。
答案 3 :(得分:0)
是的,您可以访问除私有方法之外的所有X方法