Kotlin学习笔记(三)接口

作者: 大虾啊啊啊 | 来源:发表于2020-10-19 09:31 被阅读0次

    1.接口

    在kotlint中和java类似,接口的声明使用interface来声明,而不同的是kotlin中的接口可以包含抽象函数和非抽象函数,而在java中的接口只能有抽象方法。接口的实现通过冒号来实现。当一个类中实现了两个接口中包含了相同的函数,那么需要显示的进行调用实现。如下面代码的click2函数。

    package com.example.kotlin01
    
    class InterFaceTest:CilckListener,CilckListener2 {
    
        override fun click() {
            super<CilckListener>.click2()
            super<CilckListener2>.click2()
        }
        override fun click2() {
            //指定调用的是CilckListener中的click2方法
            super<CilckListener>.click2()
            //指定调用的是CilckListener2中的click2方法
            super<CilckListener2>.click2()
        }
    }
    
    interface CilckListener {
        fun click()
        fun click2() {
            println("longClicked")
        }
    }
    interface CilckListener2 {
        fun click()
        fun click2() {
            println("longClicked2")
        }
    }
    fun main() {
        InterFaceTest().click()
        InterFaceTest().click2()
    }
    

    2.抽象属性

    可以在接口中定义一个抽象属性,在实现类中进行实现。

    interface CilckListener {
        val value:Int
        fun click()
        fun click2() {
            println("longClicked")
        }
    }
    
    class InterFaceTest:CilckListener,CilckListener2 {
        override val value: Int
            get() =Random().nextInt(10)
    
        override fun click() {
            println(value)
        }
        override fun click2() {
            //指定调用的是CilckListener中的click2方法
            super<CilckListener>.click2()
            //指定调用的是CilckListener2中的click2方法
            super<CilckListener2>.click2()
        }
    }
    
    

    3.SAM接口

    在在 Kotlin 1.4之后,当接口中只有一个抽象方法的时候,在实现的时候可以通过Lambda 的方式实现。
    如下代码:

    interface CilckListener2 {
        fun click()
    
    }
    fun main() {
        //正常的实现
        setClickListenet(object : CilckListener2 {
            override fun click() {
    
            }
        })
        //1.4.0之后当接口中只有一个抽象方法的时候,在实现的时候可以通过Lambda 的方式实现
    //    setClickListenet{
    //
    //    }
    }
    fun setClickListenet(l: CilckListener2){
    
    }
    

    相关文章

      网友评论

        本文标题:Kotlin学习笔记(三)接口

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