意外覆盖kotlin

时间:2018-02-18 16:11:11

标签: android kotlin

我有这个班级

open class BaseActivity : AppCompatActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_base)
  }
}

是这个

的超类
class MainActivity : BaseActivity() {

  protected fun onCreate(savedInstanceState: Bundle) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
  }
}

并收到错误:意外覆盖声明: protected open onCreate() protected final onCreate()

1 个答案:

答案 0 :(得分:2)

您必须使用override关键字明确标记函数以覆盖它们(如文档here中所述):

class MainActivity : BaseActivity() {

  override fun onCreate(savedInstanceState: Bundle) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
  }

}

如果省略此关键字,编译器会认为您不小心将某个函数命名为与基类​​中的另一个函数相同,因此会出现关于“意外覆盖”的警告。

您也可以删除protected关键字,因为此方法已经具有AppCompatActivity基类中声明的可见性。