kotlin 基本运算符和运算符重载

关键字 operater
1>任何类可以定义或者重载父类的基本运算符
2>通过运算符的函数名重载
3>对于参数个数的要求,对参数,返回值类型不作要求
运算符重载不能太随便
这点是java没有的,java的小伙伴羡慕嫉妒恨吧
package com.testOperaters

/**
 * Created by jingwen on 19/4/14.
 *
Kotlin 运算符重载
关键字 operater
1>任何类可以定义或者重载父类的基本运算符
2>通过运算符的函数名重载
3>对于参数个数的要求,对参数,返回值类型不作要求
运算符重载不能太随便
这点是java没有的,java的小伙伴羡慕嫉妒恨吧

 */

class ComplexNumber(var real: Double, var imaginary: Double) {

    /**
     * 参数 ComplexNumber
     */
    operator fun plus(other: ComplexNumber): ComplexNumber {
        return ComplexNumber(real + other.real, imaginary + other.imaginary)
    }

    operator fun plus(other: Int): ComplexNumber {
        return ComplexNumber(real + other, imaginary);
    }

    override fun toString(): String {
        return "$real+${imaginary}i"
    }
}

fun main(args: Array<String>) {
    var a: ComplexNumber = ComplexNumber(12.0, 11.0)
    var b: ComplexNumber = ComplexNumber(9.0, 2.0)
    var c = a + b//此时的+号代表ComplexNumber.plus
    var d = a + 1;//ComplexNumber +Int

    println(a)
    println(b)
    println(c)
    println(d)

}

执行结果:

12.0+11.0i
9.0+2.0i
21.0+13.0i
13.0+11.0i

Process finished with exit code 0

中缀表达式:自定义的运算符 on 使用infix修饰不能使用operator

package com.testOperaters

/**
 * Created by jingwen on 19/4/14.
 */

class Person{
    /**
     * 这种特殊的运算符重载, 只能有一个参数,且使用infix修饰,不能使用operator修饰
     */
   infix   fun on(any:Any):Boolean{
        if(any.toString() == "earth"){
            return true
        }
        if(any.toString() == "sun"){
            return false
        }
        return true
    }
}

fun main(args: Array<String>) {
    var arrays:Array<String> = arrayOf("jingwen","zhulina","chengcheng","suanwen")
    //
    println("zhunlina 在数组里吗?")
    println("zhulina" in arrays)

    println("刘亦菲 在数组里吗?")
    println("刘亦菲" in arrays)

    //on不是定义好的操作符,我们可以自己定义,比java强吧?

    var person:Person = Person()
    println("人在地球上面吗")
    println(person on "earth")

}

执行结果:

zhunlina 在数组里吗?
true
刘亦菲 在数组里吗?
false
人在地球上面吗
true

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/jingwen3699/article/details/89300346
今日推荐