Kotlin/포스팅

코틀린 이항 연산

짜집퍼박사(짜박) 2024. 1. 3. 22:57

코틀린에서는 이항 연산자를 오버로딩하여 사용자가 정의한 클래스에 대해 해당 연산을 지원할 수 있습니다. 이항 연산자 오버로딩은 operator 키워드를 사용하여 정의됩니다.

 

1. 이항 덧셈 (+) 연산자 오버로딩

data 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 point1 = Point(1, 2)
    val point2 = Point(3, 4)
    
    // 이항 덧셈 연산자 사용
    val result = point1 + point2
    println(result) // 출력: Point(x=4, y=6)
}

 

2. 이항 뺄셈 (-) 연산자 오버로딩

data class Point(val x: Int, val y: Int) {
    // 이항 뺄셈 연산자 오버로딩
    operator fun minus(other: Point): Point {
        return Point(x - other.x, y - other.y)
    }
}

fun main() {
    val point1 = Point(5, 8)
    val point2 = Point(3, 4)
    
    // 이항 뺄셈 연산자 사용
    val result = point1 - point2
    println(result) // 출력: Point(x=2, y=4)
}

 

3. 이항 곱셈 (*) 연산자 오버로딩

data class Point(val x: Int, val y: Int) {
    // 이항 곱셈 연산자 오버로딩
    operator fun times(factor: Int): Point {
        return Point(x * factor, y * factor)
    }
}

fun main() {
    val point = Point(2, 3)
    
    // 이항 곱셈 연산자 사용
    val result = point * 3
    println(result) // 출력: Point(x=6, y=9)
}

 

4. 이항 나눗셈 (/) 연산자 오버로딩

data class Point(val x: Int, val y: Int) {
    // 이항 나눗셈 연산자 오버로딩
    operator fun div(divisor: Int): Point {
        return Point(x / divisor, y / divisor)
    }
}

fun main() {
    val point = Point(8, 12)
    
    // 이항 나눗셈 연산자 사용
    val result = point / 4
    println(result) // 출력: Point(x=2, y=3)
}

 

5. 이항 등호 (==) 연산자 오버로딩

data class Point(val x: Int, val y: Int) {
    // 이항 등호 연산자 오버로딩
    operator fun equals(other: Point): Boolean {
        return x == other.x && y == other.y
    }
}

fun main() {
    val point1 = Point(3, 5)
    val point2 = Point(3, 5)
    
    // 이항 등호 연산자 사용
    val isEqual = point1 == point2
    println(isEqual) // 출력: true
}

위의 예제에서는 plus, minus, times, div, equals 등의 함수를 오버로딩하여 각각에 대한 이항 연산자를 정의했습니다. 사용자 정의 클래스에 대한 이항 연산자를 오버로딩하면 해당 클래스의 인스턴스끼리 연산을 수행할 수 있습니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 대입  (0) 2024.01.04
코틀린 중위 연산  (0) 2024.01.03
코틀린 증가와 감소  (0) 2024.01.03
코틀린 단항 연산  (0) 2024.01.03
코틀린 연산자 오버로딩  (0) 2024.01.03