2017-05-28 134 views
1

我正在創建一個基類。
我有開始()與一些代碼Kotlin強制覆蓋函數


而一個酒吧 ()需要通過繼承

start()方法調用巴()

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

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

我不喜歡巴()拋出異常 我不喜歡離開巴()坯體要麼

有什麼我忘了,是在科特林一個更好的選擇

回答

2

你可以讓你的方法(因此,您的類)abstract

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

這將迫使來自Foo繼承的任何非抽象類來實現bar方法,以及防止他人創造直接基類Foo類的實例。

+0

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

+0

您可以在兩種語言中都使用它,抽象類以相同的方式工作。 – zsmb13

+0

摘要是正確的,我在我的真實代碼中仍然存在一些問題,但這是另一個問題。 – Simulan88

1

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

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

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