2017-05-28 5 views
1

Ich erstelle eine Basisklasse.
Ich habe starten() mit einigen code.
Und eine bar(), die von einer Klasse werden außer Kraft gesetzt muss die FooKotlin Force Override einer Funktion

start() ruft bar()

Mein Beispiel (foo.kt) erbt:

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

ich mag es nicht bar() eine Ausnahme werfen Ich mag es nicht bar() mit leeren Körper verlassen entweder

Gibt es etwas, ich habe vergessen, das ist eine bessere Alternative in Kotlin?

Antwort

2

Sie können Ihre Methode machen (und damit Ihre Klasse) abstract:

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

Dies wird jegliche nicht-abstrakte Klasse zwingen, die von Foo erbt die bar Verfahren zu implementieren, sowie zu verhindern, dass jemand von der Erstellung eine Instanz der Basis Foo Klasse direkt.

+0

Ich kann das in Java, nicht in Kotlin richtig? start() enthält einen Code – Simulan88

+0

Sie können es in beiden Klassen tun, abstrakte Klassen arbeiten in beiden Sprachen auf die gleiche Weise. – zsmb13

+0

Zusammenfassung stimmt, ich habe noch einige Probleme in meinem echten Code, aber es ist ein anderes Problem. – Simulan88

1

können Sie Standard-Code in Android Studio/Intellij erzeugt ändern:

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

ersetzen TODO("not implemented") mit // TODO: not implemented

Verwandte Themen