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