PHpullh
학습 라이브러리/Kotlin/연산자 오버로딩 (Operator Overloading)

KOTLIN · 기초 문법

연산자 오버로딩 (Operator Overloading)

operator 키워드로 기존 연산자의 동작을 재정의합니다. plus, times, compareTo 등 다양한 연산자를 오버로딩할 수 있습니다.

기초 문법고급operator-overloadingplustimesget

핵심 설명

operator 키워드로 기존 연산자의 동작을 재정의합니다. plus, times, compareTo 등 다양한 연산자를 오버로딩할 수 있습니다.

Kotlin code

data class Vector(val x: Double, val y: Double) {
    operator fun plus(other: Vector) =
        Vector(x + other.x, y + other.y)
    operator fun times(scalar: Double) =
        Vector(x * scalar, y * scalar)
    operator fun unaryMinus() = Vector(-x, -y)
    operator fun get(index: Int) = when (index) {
        0 -> x; 1 -> y
        else -> throw IndexOutOfBoundsException()
    }
}

fun main() {
    val a = Vector(1.0, 2.0)
    val b = Vector(3.0, 4.0)

    println(a + b)       // Vector(4.0, 6.0)
    println(a * 2.5)     // Vector(2.5, 5.0)
    println(-a)          // Vector(-1.0, -2.0)
    println(a[0])        // 1.0
}

학습 팁

연산자 오버로딩은 수학적 의미가 직관적인 도메인 객체(벡터, 행렬, 복소수 등)에 사용하면 가독성이 크게 향상됩니다.

주의할 점

연산자의 의미를 왜곡하지 마세요. plus가 덧셈이 아닌 동작을 하면 코드를 읽는 사람이 혼란스러워합니다.

자주 묻는 질문

연산자 오버로딩 (Operator Overloading)란 무엇인가요?

operator 키워드로 기존 연산자의 동작을 재정의합니다. plus , times , compareTo 등 다양한 연산자를 오버로딩할 수 있습니다.

연산자 오버로딩 (Operator Overloading) 학습 시 주의할 점은 무엇인가요?

연산자의 의미를 왜곡하지 마세요. plus 가 덧셈이 아닌 동작을 하면 코드를 읽는 사람이 혼란스러워합니다.