References: Do it! 코틀린 프로그래밍
코틀린에서 연산자를 오버 로딩하는 법에 대해 알아봅니다.
오버 로딩에 대한 내용은 여기서 확인해 주세요.
1. 연산자 오버 로딩
말 그대로 오버 로딩을 연산자에 적용하는 것을 말합니다.
사실 코틀린에선 이미 여러 연산자가 많이 오버 로딩되어 있습니다.
'+'를 예시로 살펴보겠습니다.
지금까지 +연산을 직접 구현한 적이 있나요?
사실 A + B는 A.plus(B)와 같습니다. A와 B엔 다양한 자료형이 올 수 있습니다.
코틀린은 편의를 위해 이미 여러 자료형에 대해 오버 로딩을 구현해 두었습니다.
Byte, Short, Int, Long, Float, Double, Any 등 이미 오버 로딩된 '+'를 바로 사용할 수 있습니다.
만약 사용자가 정의한 객체에 대해 '+'연산을 수행하고 싶으면 어떻게 해야 할까요?
이런 경우에 연산장 오버 로딩이 필요합니다.
다음 예시를 통해 직접 정의한 클래스에 대해 연산자 오버 로딩을 해 봅시다.
class Point(var x: Int = 0, var y: Int = 0) {
operator fun plus(p: Point): Point { return Point( x + p.x, y + p.y) }
}
fun main() {
val p1 = Point(3, -8)
val p2 = Point(2, 9)
var point = Point()
point = p1 + p2
println("point = (${point.x}, ${point.y})")
}
Point 클래스에 대해서 plus 연산자를 오버 로딩하였습니다.
위의 코드를 실행하면 다음과 같은 결과를 확인할 수 있습니다.
* 연산자의 종류
- a + b = a.plus(b)
- a - b = a.minus(b)
- a * b = a.times(b)
- a / b = a.div(b)
- a % b = a.rem(b)
- a .. b = a.rangeTo(b)
- ...
반응형
'Programming' 카테고리의 다른 글
[SPA] Single Page Application (0) | 2019.10.04 |
---|---|
[Kotlin] 37. 제네릭 (0) | 2019.09.17 |
[Kotlin] 35. 어노테이션 클래스 (0) | 2019.09.16 |
[Kotlin] 34. 봉인 클래스와 열거형 클래스 (0) | 2019.09.16 |
[Kotlin] 33. 내부 클래스 (0) | 2019.09.16 |