In Java, puoi fare cose come:
class MyClass extends SuperClass implements MyInterface, ...
È possibile fare la stessa cosa a Kotlin? Assumere SuperClassè astratto e non implementaMyInterface
Risposte:
Non c'è differenza sintattica tra l' implementazione dell'interfaccia e l' ereditarietà delle classi . Elenca semplicemente tutti i tipi separati da virgole dopo i due punti :come mostrato qui:
abstract class MySuperClass
interface MyInterface
class MyClass : MySuperClass(), MyInterface, Serializable
L'ereditarietà di più classi è vietata mentre più interfacce possono essere implementate da una singola classe.
Questa è la sintassi generale da usare quando una classe si estende (un'altra classe) o implementa (una o interfacce server):
class Child: InterfaceA, InterfaceB, Parent(), InterfaceZ
Nota che l'ordine delle classi e delle interfacce non ha importanza.
Inoltre, nota che per la classe estesa utilizziamo le parentesi, la parentesi si riferisce al costruttore principale della classe genitore. Pertanto, se il costruttore principale della classe genitore accetta un argomento, anche la classe figlia dovrebbe passare quell'argomento.
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")
}
}