我对自己想做的事情是否可行感到怀疑。我有A,B和C三类。B扩展了A,C扩展了B。
C-> B->A。
在C类中,我想直接调用A类的方法。就像是
super.super.method();
我有机会吗?
原因:
A和B是系统类。我试图让B以不同的方式处理某些情况,除了一种方法,我已经完成了它。在其他方法中,我所做的是重写它们并传递修改后的参数。
现在,我有一种方法,仅修改参数就无法解决,因此我想完全覆盖它。
乙
@Override
public void draw(Canvas canvas) {
super.draw(canvas); // A method
** other stuff **
}
我想在C中做什么
@Override
public void draw(Canvas canvas) {
super.super.draw(canvas); // A method
** new stuff **
}
乔恩·斯凯特(Jon Skeet)从这里选择了最合适的答案
您不能-因为它会破坏封装。
您可以调用您超类的方法,因为它假定您知道什么会破坏您自己类中的封装,并避免这种情况……但是您不知道您的超类执行的是什么规则-因此您不能只绕过在那里执行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句