有什么办法可以跳过java继承层次结构和超级超类调用方法吗?跳过继承层次结构和超级超类的调用方法
我在java中3班
X
Y extends X
Z extends Y.
现在有没有什么办法来访问X的任何方法直接跳过Y'
有什么办法可以跳过java继承层次结构和超级超类调用方法吗?跳过继承层次结构和超级超类的调用方法
我在java中3班
X
Y extends X
Z extends Y.
现在有没有什么办法来访问X的任何方法直接跳过Y'
这里 Why is super.super.method(); not allowed in Java? 他们声称你不能和有一个很好的讨论为什么。
编辑 我假设你有类似foo的情况()在X和Y的定义,你想从X称它为Z轴
是的,你可以得到的所有方法访问X除了私有方法
现在有什么办法可以直接跳过Y的任何方法来访问X?
实际上不,理论上是的。下面您的示例:
X
Y extends X
Z extends Y.
当你调用Z的方法,它会调用super()
它将调用如有的Y方法,它会调用super()
过,这将调用X的方法到底。我说是的,当Y的方法和X没什么不同时,那么它就好像没有效果。但实际上,JVM遵循继承层次来完成调用,请牢记这一点。
我想你可以使用reflection API,但它是一种丑陋的IMO。
这种方法在Y中被覆盖了吗? –
在C++中,您可以使用范围解析;在Java中,你能不能做类似于'z.X.method()'的东西,其中z是类型Z的对象,method()是函数吗? – Bathsheba
是的..它在Y中被覆盖 –