[kotlin] 연산자 오버로딩의 개념과 사용법

코틀린은 연산자 오버로딩을 지원하여 사용자 정의 클래스에 대해 다양한 연산자를 오버로딩할 수 있습니다. 연산자 오버로딩을 통해 객체 간의 다양한 연산을 사용자 정의할 수 있으며, 이는 코드 가독성과 유지보수성을 높일 수 있습니다.

연산자 오버로딩의 개념

연산자 오버로딩이란 기존에 정의된 연산자에 새로운 의미를 부여하는 것을 의미합니다. 예를 들어, + 연산자를 통해 두 개의 객체를 더하는 연산에서, 사용자 정의 클래스에 대해 + 연산자를 오버로딩하여 원하는 대로 동작하도록 재정의할 수 있습니다.

사용법

코틀린에서 연산자를 오버로딩하려면 해당 연산자에 대한 특정한 함수를 정의해야 합니다. 이때 함수 이름은 정해진 규칙에 따라야 합니다.

예를 들어, + 연산자를 오버로딩하려면 plus라는 함수를 정의해야 합니다.

다음은 + 연산자를 오버로딩하는 예시입니다.

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

fun main() {
    val p1 = Point(3, 4)
    val p2 = Point(1, 2)
    val p3 = p1 + p2 // p1.plus(p2)와 동일
    println("(${p3.x}, ${p3.y})") // 출력: (4, 6)
}

위 예시에서 operator 키워드를 사용하여 plus 함수를 정의함으로써 + 연산자를 오버로딩하였습니다.

참고 자료