首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@Override和Super

@Override和Super
EN

Stack Overflow用户
提问于 2012-02-15 18:54:46
回答 2查看 1K关注 0票数 2

在我看来,当您覆盖方法时,您打算修改它们的有用性。

但是,如果我对此不感兴趣,为什么还要在超类中调用相同的方法(以最初编写的方式)呢?也就是说,修改方法,然后以原始的方式调用相同的方法,在我看来,第一次更改被第二次更改撤消了。我哪里错了?

EN

回答 2

Stack Overflow用户

发布于 2012-02-15 19:11:53

除了Trevor之外,大多数需要你调用super()的方法意味着你要覆盖的方法是流程生命周期顺利进行所必需的(就像在活动的onCreate、onPause等中)。如果你不能在这些方法上返回super,android将会抱怨。

另一方面,调用超级的其他被覆盖的方法(你可以在扩展安卓类时看到它们)实际上返回了一些东西(很可能是真的或假的)-就像在一些return super.methodName(args);中一样-根据情况,你可以覆盖这些方法,直到你可以手动返回一个值并跳过超级调用。

票数 4
EN

Stack Overflow用户

发布于 2012-02-15 19:01:55

您不必为了调用派生类的超类中的方法而调用.super()。然而,您经常这样做,因为您在被覆盖的方法中所做的工作应该是超类方法所执行的工作之外的工作。是否这样做取决于相关代码的设计。

一些Android API方法在覆盖它们时绝对需要调用.super(),因为超类的方法绝对大多数都会做一些重要的事情,即使派生类覆盖了该方法。如果在覆盖Android API方法时必须调用.super(),文档通常会这样说明。如果你没有做到这一点,你可能会得到一个异常,特别是在你执行代码时没有这样做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9292005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档