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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值