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类可以直接和数字相加。