跳过继承层次结构和超级超级类调用方法的方法

时间:2013-06-27 12:09:53

标签: java oop inheritance

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

我在java中有3个类

X
Y extends X
Z extends Y.

现在有没有办法直接跳过Y来访问X的任何方法?

4 个答案:

答案 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方法