接口

package jiekou
/*
Kotlin 接口与java8类似,使用interface 关键字定义接口,
允许方法有默认实现(可以有多个)
*/
interface MyInterface {
var name:String //name 属性是抽象的
fun bar() //未实现
fun foo2(){
println("foo2")
}
fun foo(){
//已实现
println("foo")
}
}

//---------------实现接口-------------------
/*
一个类可以实现一个或者多个接口
*/

/*
//未测试接口抽象属性
class Child : MyInterface{
override fun bar(){
//方法体
println("bar")
}
}/
/

fun main(args: Array<String>) {
val c=Child()
c.foo()
c.foo2()
c.bar()
}
*/

//------------------接口中的属性------------------
/*
接口中的属性只能是抽象的,不允许初始化之,接口不会保存
属性值,实现接口时,必须重写属性
*/

class MyImpl:MyInterface{
override var name:String ="runoob"//重载属性
override fun bar(){
//方法体
println("bar")
}
}

/*fun main(args: Array<String>) {

val c=MyImpl()
println(c.name)

}
*/

//--------------函数重写-----------
/*
实现多个接口,可能会遇到统一方法继承多个实现的问题
*/

interface A{
fun foo(){println("A")}
fun bar()
}

interface B{
fun foo(){println("B")}
fun bar(){println("B---bar")}
}

class C:A{
override fun bar(){
println("C--bar")
}
}
//格式: super<接口名>.接口方法 调用相应的接口实现的相同的方法
class D:A,B{
override fun foo(){
super<A>.foo()
super<B>.foo()
}
override fun bar(){
println("A--Bar")
super<B>.bar()
}
}

fun main(args: Array<String>) {
val d=D()
d.foo()
d.bar()
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容