第一行代码 第三版 5.6 kotlin课堂 :扩展函数和运算符重载

5.6 kotlin课堂 :扩展函数和运算符重载

5.6.1扩展函数

拓展函数 : 表示即使在不修改某个类的源代码的情况下,仍然可以打开这个类,向该类中添加新函数。

拓展函数的语法结构:

fun ClassName.methodName(param1 :Int,param2 :Int):Int{
	return 0
	}

示例代码:

/**
 * 将letterCount()方法定义成String类的拓展函数
 * 函数会自动拥有String 实例的上下文
 */
fun String.letterCount():Int{
    var count = 0
    for(char in this){
        if(char.isLetter()){
            count++
        }
    }
    return count
}
fun main() {
    val count="Adsasvcw25156a1d3w".letterCount()
    println(count)
}

拓展函数的作用:多数情况下,可以让API变得更加简洁丰富,更加面向对象。

5.6.2 运算符重载

Kotlin的运算符重载允许我们让任意链两个对象进行相加,或者是进行更多其他的运算符重载。

运算符重载使用的是operator关键字,在指定函数的前面加上operator关键字就可以实现运算符重载的功能。
对两个对象进行相加操作

class Money(val value:Int) {
    operator fun plus(money: Money):Money{
        val sum=value+money.value
        return Money(sum)
    }
}

fun main() {
    val money1=Money(100)
    val money2=Money(400)
    val money3 =money1+money2
    val money4=money1.plus(money2)
    println("${money1.value} + ${money2.value} =${money3.value}-----${money4.value}")
}

因为kotlin允许我们对同一个运算符进行多重重载,所以可以实现上述代码中的Money类可以直接和数字相加。

发布了28 篇原创文章 · 获赞 11 · 访问量 2408

猜你喜欢

转载自blog.csdn.net/Y_an_Y/article/details/105586386