重载运算符是多态的一种方式,具体含义是在自定义类中对原有的运算符赋予新的意义。如“+”这个二元运算符最基本的含义是两个数相加,但是在String
类中可以表示两个字符串的连接,如
'abc'+'def'='abcdef'
运算符重载的使用的关键字时operator
,以重载’+'为例,说明重载运算符的标准格式
class Obj{
operator fun plus(obj:Obj):Obj(
//在这里定义函数体
)
}
不同的函数名对应不同的运算符,如plus
对应’+’,下表列出来函数名和操作符的对应关系。
运算符 | 函数名 | 备注 |
---|---|---|
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 == b | a.equals(b) | |
a > b a < b a >= b b <= b | a.comparyTo(b) | |
a..b | a.rangeTo(b) | |
a[b] | a.get(b) | |
a[b] = c | a.set(b, c) | |
a in b | b.contains(a) |