阅读 134

Kotlin学习笔记之接口

interface MyStudent{    /*********************** 接口中的属性 ************************/    val name:String // 1、接口中可以声明抽象属性,等待继承接口的类去赋值  2021/6/22    val propertyWithImplementation:String // 2、带有访问器实现的属性  2021/6/22    get() { //        return field  // 3、接口中声明的属性的访问器中不能访问field字段(Property in an interface cannot have a backing field)  2021/6/22        return "Tom"    }    fun helloWorld(){        print(name)    }    /*********************** 接口中的方法 ************************/    fun study()  // 4、接口中可以声明抽象方法,即只有方法声明,没有方法体的方法  2021/6/22    fun run(){ // 5、 接口中可以定义实现了方法体的方法 2021/6/22        print("run fast")    } } // 6、实现1,在主构造函数中初始化属性  2021/6/22 class Tom(override val name: String) :MyStudent{    override fun study() {        print(name + "不喜欢学习")    } } // 7、实现2,通用实现  2021/6/22 class John : MyStudent{    override val name: String        get() = "John"    override fun study() {        println(name + "喜欢学习")    } } // 接口的继承  2021/6/22 interface Student:MyStudent{    override val name: String        get() = "新接口中定义的覆盖的名称" } // 多接口继承时的覆盖冲突问题  2021/6/22 interface A{    fun methodA()    fun methodB(){        println("这是接口A中的方法methodB")    } } interface B{    fun methodA(){        println("这是接口B中的方法methodA")    }    fun methodB(){        println("这是接口B中的方法methodB")    } } class C:A,B{    override fun methodA() {        // 8、只有接口B实现了methodA,所以不存在冲突问题,所以一下两种写法等价  2021/6/22        super<B>.methodA()        super.methodA()    }    override fun methodB() {        // 9、接口A和接口B都实现了methodB,所以在调用时,需要指定是调用哪个接口的methodB  2021/6/22        super<A>.methodB()        super<B>.methodB()    } } // 10、接口的使用  2021/6/22 val anna = object : Student {    override fun study() {        println(name + "学习很努力")    } }


作者:哈喽呀
链接:https://juejin.cn/post/7026624895706464293


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐