扩展函数:
概念:在不修改某个类的源码的前提下,为该类添加新的函数,无论该类是否为final类型。
语法结构:
fun ClassName.methodName(param1: Int, param2: Int): Int {
//相关逻辑
return 0
}
tips:最好定义成顶层函数,方便全局使用。
运算符重载:
概念:同一运算符在不同的环境所表现的效果不同,如”+“在两个Int值之间表示两者的数值相加,在两个字符串之间表示,将字符串拼接,同时kotlin允许我们将任意两个类型的对象进行”+“运算,或者其他运算符操作。
语法结构:如下,其中operator 为运算符重载的关键字
class A {
operator fun plus(a: A): A {
//相关逻辑
}
}
”a+b“对应的重载函数为a.plus(b)
”a-b“对应的重载函数为a.minus(b)
”a*b“对应的重载函数为a.times(b)
”a/b“对应的重载函数为a.div(b)
”a%b“对应的重载函数为a.rem(b)
”a++“对应的重载函数为a.inc()
”a--“对应的重载函数为a.dec()
”+a“对应的重载函数为a.unaryPlus()
”-a“对应的重载函数为a.unaryMinus()
”!a“对应的重载函数为a.not()
”a == b“对应的重载函数为a.equals(b)
”a > b“、”a < b“、”a >= b“、”a >= b“对应的重载函数为a.compareTo(b)
”a..b“对应的重载函数为a.rangeTo(b)
”a[b]“对应的重载函数为a.get(b)
”a[b] = c“对应的重载函数为a.set(b, c)
”a in b“对应的重载函数为b.contains(a)
扩展函数和运算符重载的合体:
operator fun ClassName.plus(param1: ClassName): ClassName {
//相关逻辑
return result
}