第十八节 扩展函数

1、扩展函数
在不改变原有类(系统类、自定义类)的基础上,为原有的类增加函数
示例:为String类添加空判断方法

fun main(args: Array<String>) {

    var str="张三"
    println(str.myIsEmpty())

}


fun String.myIsEmpty():Boolean{
    return this==null||this.length==0
}

输出:


image.png
fun main(args: Array<String>) {

    var str=""
    println(str.myIsEmpty())

}


fun String.myIsEmpty():Boolean{
    return this==null||this.length==0
}

输出:


image.png

上面默认了一种情况就是str永远不会为null
修改代码,使str可能出现null

fun main(args: Array<String>) {

    var str=null
    println(str?.myIsEmpty())

}


fun String.myIsEmpty():Boolean{
    return this==null||this.length==0
}

输出:


image.png

并没有输出true或者false,而是输出了null,因为str根本就没用调用myIsEmpty()方法
修改代码:

fun main(args: Array<String>) {

    var str=null
    println(str.myIsEmpty())

}


fun String?.myIsEmpty():Boolean{
    return this==null||this.length==0
}

输出:


image.png

2、在父类中定义的扩展函数子类可以正常访问,但是不能覆写

fun main(args: Array<String>) {

    var son=Son()
    son.sayHello()
}


open class Father

fun Father.sayHello(){
    println("父类中的扩展函数")
}

class Son:Father()

输出:


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 3,835评论 0 11
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,849评论 2 9
  • 开始日更是受好友的影响,看好友每天坚持日更,很是佩服她的毅力,便想试试看,自己能够坚持多少天,以前也买过2...
    木子三人阅读 113评论 0 1
  • 观于海者难为水。 两年前的三月,我作为哈佛法学院访问以色列团组的一员,来到了以色列北部的空军军事基地。Air Fo...
    生如如花阅读 632评论 0 1
  • 我只是在记录我的姐姐。 她和我说过她有很多梦想,但是那个年纪里天花乱坠的梦想停留在了她初三毕业那年。 家里人认为我...
    我是星星i阅读 399评论 0 1