Kotlin和Java一样是单继承多实现的
抽象类
Kotlin的抽象类和Java都是使用abstract,Kotlin可以是有抽象函数去覆盖一个非抽象的公开函数。
open class Base {
open fun method(){
println("Base")
}
}
abstract class Example: Base(){
abstract override fun method()
}
接口
Kotlin的接口也是用 interface定义的,它可以有抽象的函数和实现的函数。
interface BaseInterface {
fun method()
fun method1(){ .... }
}
接口中的属性只能是抽象的或是提供访问器实现(val修饰),接口的属性是没有幕后字段的所以声明的访问器中是无法引用的
interface BaseInterface {
var attr: String
val attr1: String
get() = "attr1"
}
当实现多个接口的时遇到同一个函数继承多个实现时,可以使用super< ? >指定要调用的函数。
interface BaseInterface {
fun method(){
println("BaseInterface")
}
}
interface Base {
open fun method(){
println("Base")
}
}
class Example: Base,BaseInterface {
override fun method() {
super<BaseInterface>.method()
super<Base>.method()
}
}