在Java中,您可以执行以下操作:
class MyClass extends SuperClass implements MyInterface, ...
在Kotlin可以做同样的事情吗?假设SuperClass
是抽象的并且没有实现MyInterface
答案 0 :(得分:79)
interface implementation和class inheritance之间没有句法差异。只需列出冒号:
之后以逗号分隔的所有类型,如下所示:
abstract class MySuperClass
interface MyInterface
class MyClass : MySuperClass(), MyInterface, Serializable
禁止多类继承,而单个类可以实现多个接口。
答案 1 :(得分:3)
这是在扩展类(另一个类)或实现(一个或服务器接口)时使用的常规语法:
class Child: InterfaceA, InterfaceB, Parent(), InterfaceZ
请注意,类和接口的顺序无关紧要。
此外,请注意,对于扩展的类,我们使用括号,括号是父类的主要构造函数。因此,如果父类的主构造函数接受一个参数,则子类也应传递该参数。
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")
}
}