Kotlin强制覆盖函数

问题描述:

我正在创建一个基类。
我有开始()与一些代码Kotlin强制覆盖函数


而一个酒吧 ()需要通过继承

start()方法调用巴()

我的例子(foo.kt)一类被overidden

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

我不喜欢巴()抛出异常 我不喜欢离开巴()坯体要么

有什么我忘了,是在科特林一个更好的选择

你可以让你的方法(因此,您的类)abstract

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

这将迫使来自Foo继承的任何非抽象类来实现bar方法,以及防止他人创造直接基类Foo类的实例。

+0

我能做到这一点在Java中,而不是在科特林吧? start()包含一些代码 – Simulan88

+0

您可以在两种语言中都使用它,抽象类以相同的方式工作。 – zsmb13

+0

摘要是正确的,我在我的真实代码中仍然存在一些问题,但这是另一个问题。 – Simulan88

您可以更改Android Studio中/的IntelliJ生成的默认代码:

File -> Settings 
Then look for Editor -> File and Code Templates 
Code -> New Kotlin Function Body 

更换TODO("not implemented")// TODO: not implemented