假设,如果我没有在超类super.onPause
的覆盖方法中调用Activity
,则在调用onPause()
时会出错。但是,如果我在super.XXX
派生的类的方法(onCreate
,onStartCommand
,...)中没有Service
次调用,则不会显示错误。
那么在什么条件下我应该在覆盖方法中调用super.XXX
?
答案 0 :(得分:7)
如果您派生onPause
课程,则需要致电Activity
{/ 3}}:
派生类必须调用超类的此方法的实现。如果他们不这样做,将抛出异常。
Service
文档不需要documentation tells you。
一般情况下(不是特别在Android中),当你派生时,你应该调用超类的方法,除非你知道你不应该。这是一个需要逐个案例的决定,但默认(我会说)是你做的。
答案 1 :(得分:0)
那么在什么条件下我应该在覆盖方法中调用super.XXX?
不可能给出有用的答案。它完全取决于覆盖方法的预期目的和行为以及被覆盖的方法。
如果您不知道,则需要执行以下一项或多项操作:
在这种特殊情况下,javadoc给出了明确的答案。
答案 2 :(得分:0)
如果手册中有这样说,你必须打电话给@ t-j-crowder说。
派生类必须通过调用 超类的实现 这种方法。如果他们不这样做, 异常将被抛出。
如果没有,那么推理是,如果你正在调用一个函数,你想要启动'正常'行为吗?
例如,如果你覆盖onKeyDown()
你可以在按下某个键后做某事(例如'回')。然后你可以选择:
答案 3 :(得分:0)
客户端代码只能知道子类Activity
(称之为MyActivity
),客户端代码无法知道Activity
。但是,MyActivity
可以知道其基类Activity。
如果重写的方法onPause()
与其基类相同,则不需要显式覆盖它。