Em Java, você pode fazer coisas como:
class MyClass extends SuperClass implements MyInterface, ...
É possível fazer a mesma coisa em Kotlin? O pressuposto SuperClass
é abstrato e não implementaMyInterface
Respostas:
Não há diferença sintática entre implementação de interface e herança de classe . Simplesmente liste todos os tipos separados por vírgulas após dois pontos, :
conforme mostrado aqui:
abstract class MySuperClass
interface MyInterface
class MyClass : MySuperClass(), MyInterface, Serializable
A herança de várias classes é proibida, enquanto várias interfaces podem ser implementadas por uma única classe.
Esta é a sintaxe geral a ser usada quando uma classe está estendendo (outra classe) ou implementando (uma ou interfaces de servidor):
class Child: InterfaceA, InterfaceB, Parent(), InterfaceZ
Observe que a ordem das classes e interfaces não importa.
Além disso, observe que, para a classe que é estendida, usamos parênteses, o parêntese se refere ao construtor principal da classe pai. Portanto, se o construtor principal da classe pai receber um argumento, a classe filha também deverá passar esse 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")
}
}