... > Kotlin > Перегрузка операторов в...

Перегрузка операторов в Kotlin

НАВИГАЦИЯ ПО СТРАНИЦЕ

оператора сложения оператора умножения Перегрузка других операторов

Перегрузка операторов в Kotlin позволяет использовать знаки операторов для пользовательских типов данных, таких как классы. Давайте рассмотрим основные аспекты перегрузки операторов.

Пример перегрузки оператора сложения +

class Point(val x: Int, val y: Int) {
    operator fun plus(other: Point): Point {
        return Point(x + other.x, y + other.y)
    }
}

В этом примере для класса Point перегружен оператор сложения +. Теперь мы можем складывать две точки следующим образом:

val point1 = Point(1, 2)
val point2 = Point(3, 4)
val result = point1 + point2

Пример перегрузки оператора умножения *

class Vector(val x: Int, val y: Int) {
    operator fun times(scalar: Int): Vector {
        return Vector(x * scalar, y * scalar)
    }
}

Здесь оператор умножения * перегружен для класса Vector, что позволяет умножать вектор на скаляр:

val vector = Vector(2, 3)
val scaledVector = vector * 5

Перегрузка других операторов

Кроме сложения и умножения, в Kotlin можно перегружать и другие операторы, такие как -, /, %, ==, <, >, и многие другие.

class Complex(val real: Double, val imaginary: Double) {
    operator fun plus(other: Complex): Complex {
        return Complex(real + other.real, imaginary + other.imaginary)
    }

    operator fun times(scalar: Double): Complex {
        return Complex(real * scalar, imaginary * scalar)
    }

    operator fun equals(other: Complex): Boolean {
        return real == other.real && imaginary == other.imaginary
    }
}

Этот пример показывает перегрузку операторов для класса Complex, представляющего комплексные числа.

Перегрузка операторов в Kotlin обеспечивает удобный и читаемый синтаксис для пользовательских типов данных, позволяя использовать знаки операторов в стиле, аналогичном встроенным типам данных.