接口

作者: Green_Apple | 来源:发表于2017-09-01 09:34 被阅读0次

    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()
    }

    相关文章

      网友评论

          本文标题:接口

          本文链接:https://www.haomeiwen.com/subject/zkehjxtx.html