我怎么知道何时/何处调用超类的重写方法

Hen*_*nry 4 java android

在编写Android应用程序时,这个问题出现了,但它似乎是一个更普遍的编程问题.

情况是,我正在从库中扩展(子类化)一个类,并覆盖一个方法.我怎么知道我是否应该调用超类的方法?什么时候?(在重写方法的开头或最后?)

例如,我在Android平台的类"Activity"中覆盖了方法"public boolean onCreateOptionsMenu(Menu menu)".在一个例子中,我看到有人在方法的最后写了"return super.onCreateOptionsMenu(menu)".但我怎么知道它应该这样做?这是对还是不对?如果我用"super.onCreateOptionsMenu(menu)"开始我的方法有什么区别?

BR,亨利

Dav*_*har 7

我不认为你可以抽象地回答这个问题:它取决于你所覆盖的超类方法的行为.

根据具体情况,可能适合:

  • 先打电话给超级
  • 最后打电话
  • 自己处理一些情况(自定义),其余部分调用super
  • 从不打电话给超级

希望您所覆盖的特定类的文档将告诉您是否/何时需要调用super.

  • 除了文档,一些常识和经验也将在这里指导您.例如,除了通常发生的事情之外,您是否尝试做某些事情(调用超类方法)或者您是否尝试做某事而不是正常行为(不要)?你的东西需要先发生还是最后发生. (2认同)