Kotlin强制覆盖一个函数

时间:2017-05-28 19:47:01

标签: kotlin

我正在创建一个基类 我有一些代码 start() 并且 bar()需要被继承 Foo

的类覆盖

start()调用bar()

我的例子(foo.kt):

open class Foo {
    fun start() {
        bar()
        //...
    }
    fun bar() {
        TODO("implement me in deriving class")
    }
}

我不喜欢 bar()抛出异常 我不喜欢 bar()空白身体

Kotlin有什么我忘记了更好的选择吗?

1 个答案:

答案 0 :(得分:2)

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

abstract class Foo {
    fun start() {
        bar()
        //...
    }
    abstract bar()
}

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