要求超级的超级

Juangcg

我对自己想做的事情是否可行感到怀疑。我有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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章