In Java können Sie Folgendes tun:
class MyClass extends SuperClass implements MyInterface, ...
Ist es möglich, dasselbe in Kotlin zu tun? Angenommen, es SuperClass
ist abstrakt und wird nicht implementiertMyInterface
Es gibt keinen syntaktischen Unterschied zwischen der Schnittstellenimplementierung und der Klassenvererbung . Listen Sie einfach alle durch Kommas getrennten Typen nach einem Doppelpunkt auf, :
wie hier gezeigt:
abstract class MySuperClass
interface MyInterface
class MyClass : MySuperClass(), MyInterface, Serializable
Die Vererbung mehrerer Klassen ist verboten, während mehrere Schnittstellen von einer einzelnen Klasse implementiert werden können.
Dies ist die allgemeine Syntax, die verwendet wird, wenn eine Klasse erweitert (eine andere Klasse) oder implementiert (eine oder mehrere Schnittstellen) wird:
class Child: InterfaceA, InterfaceB, Parent(), InterfaceZ
Beachten Sie, dass die Reihenfolge der Klassen und Schnittstellen keine Rolle spielt.
Beachten Sie auch, dass sich die Klammer für die erweiterte Klasse, die wir verwenden, auf den Hauptkonstruktor der übergeordneten Klasse bezieht. Wenn der Hauptkonstruktor der übergeordneten Klasse ein Argument verwendet, sollte die untergeordnete Klasse dieses Argument ebenfalls übergeben.
interface InterfaceX { fun test(): String } open class Parent(val name:String) { //... } class Child(val toyName:String) : InterfaceX, Parent("dummyName"){ override fun test(): String { TODO("Not yet implemented") } }
quelle