Kotlin 接口与 Java 8 类似,使用 interface 关键字定义接口,允许方法有默认实现:
interface MyInterface {
/**
* 未实现的方法
*/
fun bar() : Int
/**
* 已实现的方法
*/
fun foo(): Int {
return 1
}
}
实现接口
一个类或者对象可以实现一个或多个接口。
interface MyInterface {
/**
* 未实现的方法
*/
fun bar() : Int
/**
* 已实现的方法
*/
fun foo(): Int {
return 1
}
}
实例
val child = Child()
tvContent.append(child.foo().toString())
tvContent.append(child.bar().toString())
接口中的属性
接口中的属性只能是抽象的,不允许初始化值,接口不会保存属性值,实现接口时,必须重写属性:
interface MyInterface{
var name:String //name 属性, 抽象的
}
class MyImpl:MyInterface{
override var name: String = "runoob" //重写属性
}
函数重写
实现多个接口时,可能会遇到同一方法继承多个实现的问题。例如:
interface A {
fun foo() { print("A") } // 已实现
fun bar() // 未实现,没有方法体,是抽象的
}
interface B {
fun foo() { print("B") } // 已实现
fun bar() { print("bar") } // 已实现
}
class C : A {
override fun bar() { print("bar") } // 重写
}
class D : A, B {
override fun foo() {
super<A>.foo()
super<B>.foo()
}
override fun bar() {
super<B>.bar()
}
}
fun main(args: Array<String>) {
val d = D()
d.foo();
d.bar();
}
网友评论