998531df创建于 2022年3月23日历史提交
open class A {
    let x: Int32
    init(x: Int32) {
        this.x = x
    }

    open func print(): Unit {
        print("A: ${x}\n")
    }

    operator func *(right: A) {
        return A(this.x * right.x)
    }
}

class B <: A {
    init(x: Int32) {
        super(x)
    }

    override func print(): Unit {
        print("B: ${x}\n")
    }

    operator func *(right: B) {
        return B(this.x * right.x)
    }
}

extend A {
    operator func +(right: A) {
        return A(this.x + right.x)
    }
}

extend B {
    operator func +(right: B) {
        return B(this.x + right.x)
    }
}

func main() {
    let a = A(10)
    a.print()

    let b = B(10)
    b.print()

    let c = a * b
    c.print()

    let c2 = b * a
    c2.print()

    let c3 = b * b
    c3.print()

    let d = a + b
    d.print()

    let d2 = b + a
    d2.print()

    let d3 = b + b
    d3.print()
}