kotlin精讲-第4章(1)拓展函数&拓展属性

作者: 739c8d412b4c | 来源:发表于2017-12-06 09:50 被阅读215次

    拓展函数

    定义

    Kotlin的标准库给我们提供了大量的类,类里面提供了大量的方法。但是,实际开发过程中,具体的某一个类,仅仅通过系统提供的方法远远不能满足需求。

    使用Java开发的时候,我们可以通过继承类或者通过代理模式,可以对某一个类做增强。使用Kotlin开发,这一切变的简单。Kotlin允许拓展方法,只需要按照给定的语法格式,可以很方便的对某一个类添加方法。

    怎么定义拓展函数

    那拓展函数怎么定义呢?通过如下格式定义:


    AnyClass:任意类

    functionName:拓展函数的函数名

    params:拓展函数的参数

    receiverType:拓展函数的返回值

    method body:拓展函数的方法体

    假如,假如我们“想获取字符串最后一个字符”,如果用java语言,我们可能需要会定义一个StringUtils的类,然后写一个getLastChar的方法,代码如下:

    同样的逻辑,如果在Kotlin里面,就是通过拓展函数的形式去实现了,参考代码:

    拓展函数使用注意

    java里面,父类和子类有相同方法的时候,子类方法优先。这是多态的表现,通过一个代码给大家回顾下,参考代码:

    那如果kotlin里面,子类和父类拥有同名的拓展方法会是怎样呢?Kotlin的拓展函数则不存在子类优先的原则。Kotlin的拓展函数是静态解析的,完全由当前变量的类型决定。参考代码:

    那如果kotlin里面,类本身的成员函数和拓展函数同名会怎样呢?Kotlin的拓展函数针对成员函数和拓展函数同名问题,遵循成员函数优先的原则。参考代码:

    拓展属性

    定义

    Kotlin的标准库给我们提供了大量的类,类里面提供了大量的属性。但是,实际开发过程中,具体的某一个类,仅仅通过系统提供的属性可能不能满足需求。

    使用Java开发的时候,我们可以通过继承类或者通过代理模式,可以对某一个类做增强。使用Kotlin开发,这一切变的简单。Kotlin允许拓展属性,只需要按照给定的语法格式,可以很方便的对某一个类添加属性。

    怎么定义拓展属性

    那拓展函数怎么定义呢?通过如下格式定义:

    getter

    setter

    AnyClass:任意类

    propertiesName:拓展属性名字

    propertiesType:拓展属性类型

    getter:拓展属性的getter方法

    setter:拓展属性的setter方法

    假如我们想“获取字符串最后一个字符”,我们除了用开始的拓展函数去实现,还可以使用拓展属性,参考案例:

    拓展函数编辑技巧

    idea编辑技巧.gif

    相关文章

      网友评论

        本文标题:kotlin精讲-第4章(1)拓展函数&拓展属性

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