Kotlin 强制覆盖函数

Sim*_*n88 3 kotlin

我正在创建一个基类。
我有一些代码start()。 还有一个bar()需要被继承Foo的类覆盖

start() 调用 bar()

我的例子(foo.kt):

open class Foo {
    fun start() {
        bar()
        //...
    }
    fun bar() {
        TODO("implement me in deriving class")
    }
}
Run Code Online (Sandbox Code Playgroud)

我不喜欢酒吧()抛出一个例外, 我不喜欢离开酒吧()坯体无论是

有什么我忘记的东西是Kotlin 中更好的选择吗?

zsm*_*b13 5

您可以制作您的方法(以及您的课程)abstract

abstract class Foo {
    fun start() {
        bar()
        //...
    }
    abstract bar()
}
Run Code Online (Sandbox Code Playgroud)

这将强制任何继承自的非抽象类Foo实现该bar方法,并防止任何人Foo直接创建基类的实例。

  • 在这种情况下,包含某些实现的方法可以调用基类中的另一个抽象函数,子级必须重写该函数。 (4认同)
  • 知道如何在不使其抽象的情况下实现这一目标吗?例如,我在 super 中有一个方法,我希望子级覆盖该方法,但将实现保留在 super 中。 (2认同)