En Java, puede hacer cosas como:
class MyClass extends SuperClass implements MyInterface, ...
¿Es posible hacer lo mismo en Kotlin? Asumir SuperClass
es abstracto y no implementaMyInterface
Respuestas:
No hay diferencia sintáctica entre la implementación de la interfaz y la herencia de clases . Simplemente enumere todos los tipos separados por comas después de dos puntos :
como se muestra aquí:
abstract class MySuperClass
interface MyInterface
class MyClass : MySuperClass(), MyInterface, Serializable
La herencia de clases múltiples está prohibida, mientras que una sola clase puede implementar varias interfaces.
Esta es la sintaxis general para usar cuando una clase se está extendiendo (otra clase) o implementando (una o varias interfaces):
class Child: InterfaceA, InterfaceB, Parent(), InterfaceZ
Tenga en cuenta que el orden de las clases y las interfaces no importa.
Además, observe que para la clase que se extiende usamos paréntesis, el paréntesis se refiere al constructor principal de la clase principal. Por lo tanto, si el constructor principal de la clase principal toma un argumento, la clase secundaria también debería pasar ese argumento.
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")
}
}