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()
}
网友评论