演算子のオーバーロードと合意したKotlin学習(11)

1.過負荷バイナリ演算子

まあオーバーロードされている事業者

!、===、==リアルタイムにオーバーロードすることはできません?という&&、||、注意

私たちは、使用1 + 1することを自然の中で実行可能ファイルを1.plus(1)
、我々は上書きすることができ、プラスその他の機能。

(1 + 2I)+(:次に、我々は、例えば、添加することにより、複数の基本的な動作をするクラスを設計 + 4I 3)= 4 + 6I 減算:(1 + 2I) - ( 3 + 4I)= - 2 - 2Iを
乗じた:(1 + 2I)*( - 5 + 10I 3 + 4I)=

私たちは、複雑なクラスを設計し、以下のとおりです。

  • メンバー変数:本当の本当の、画像の虚部、それはintです
  • メンバー・メソッド:加算、減算、乗算
  class Complex {
        var real: Int = 0
        var image: Int = 0

        constructor()
        constructor(real: Int, image: Int) {
            this.real = real
            this.image = image
        }
    }

またルールが実装され、実際のプラス実数部、虚数部に結合された虚数部、減算、除算共感

        operator fun plus(c: Complex): Complex {
            return Complex(this.real + c.real, this.image + c.image)
        }

        operator fun minus(c: Complex): Complex {
            return Complex(this.real - c.real, this.real - c.real)
        }

        operator fun times(c: Complex): Complex {
            return Complex(this.real * c.real - this.image * c.image, this.real * c.image + this.image * c.image)
        }

使用します。

        val c1 = Complex(1, 1)
        val c2 = Complex(2, 2)

        val p = c1 + c2
        val t = c1 * c2

2.過負荷インクリメントデクリメント単項演算子

ここでのコードは、我々は唯一のものを単項演算子を知って、ここで停止ライン上に代わって機能します:

  • a.unaryPlus()
    + A
  • a.unaryMinus()
    -a(負)
  • a.not()
    !A
  • a.inc()
    ++、++ A
  • a.dec()
    - 、 - A

3.オーバーロードされた比較演算子

同上セクション:

  • a.compareTo(B)> 0
    、A> B
  • a.compareTo(B)<0
    A <B
  • a.compareTo(B)> = 0
    、A> = B
  • a.compareTo(B)<= 0
    <= B

4.過負荷代入演算子

同上セクション:

  • a.plusAssign(B)
    + = B
  • a.minusAssign(B)
    - = B
  • a.timesAssign(B)
    * = B
  • a.divAssign(B)
    / B =
  • a.remAssign(B)
    = B%以下
公開された248元の記事 ウォン称賛99 ビュー10万+

おすすめ

転載: blog.csdn.net/rikkatheworld/article/details/103044323