코틀린에서는 이항 연산자를 오버로딩하여 사용자가 정의한 클래스에 대해 해당 연산을 지원할 수 있습니다. 이항 연산자 오버로딩은 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 |