En Java, vous pouvez faire des choses telles que:
class MyClass extends SuperClass implements MyInterface, ...
Est-il possible de faire la même chose à Kotlin? En supposant qu'il SuperClass
est abstrait et n'implémente pasMyInterface
Il n'y a pas de différence syntaxique entre l' implémentation d'interface et l' héritage de classe . Répertoriez simplement tous les types séparés par des virgules après un deux-points, :
comme indiqué ici:
abstract class MySuperClass
interface MyInterface
class MyClass : MySuperClass(), MyInterface, Serializable
L'héritage de classes multiples est interdit tandis que plusieurs interfaces peuvent être implémentées par une seule classe.
Voici la syntaxe générale à utiliser lorsqu'une classe est en train d'étendre (une autre classe) ou d'implémenter (une ou plusieurs interfaces serveur):
class Child: InterfaceA, InterfaceB, Parent(), InterfaceZ
Notez que l'ordre des classes et des interfaces n'a pas d'importance.
Notez également que pour la classe qui est étendue, nous utilisons des parenthèses, la parenthèse fait référence au constructeur principal de la classe parente. Par conséquent, si le constructeur principal de la classe parente prend un argument, la classe enfant doit également passer cet argument.
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") } }
la source