티스토리 뷰

반응형
SMALL

연산자 재정의란?

코틀린에서는 사용자가 연산자들을 재정의해서 사용할 수도 있다.

연산자 재정의는 개발자가 원하는 특정 연산을 수행하도록 연산자를 다시 정의하는 것을 말한다.

예를 들어 +는 더하기를 하는 연산이지만, 재정의를 통해 +를 빼기 연산을 하도록 재정의할 수 있다.

 

연산자 재정의는 함수를 재정의함으로써 이루어진다. 그 이유는 무엇일까?

+가 plus()함수, -가 minus() 등의 연산을 수행하는 함수가 존재하기 때문이다.

예를 들어 +라는 연산을 수행하는 plus함수를 사용한 코드이다.

fun main() {
    val a: Int = 10
    val b: Int = 5

    val result1: Int = a + b
    val result2: Int = a.plus(b)
    println("result1 : $result1 ... result2 : $result2")
}

 

연산자를 재정의하려는 함수 앞에는 operator라는 예약어(Keyword)를 추가해야 한다.

data class MyClass(val no: Int) {
    operator fun plus(arg: Int): Int {
        return no - arg
    }
}

operator fun MyClass.minus(arg: Int): Int {
    return no + arg
}

class Test(val no: Int) {
    operator fun plus(arg: Int): Int {
        return no - arg
    }
}

fun main() {
    val obj: MyClass = MyClass(10)

    val result1 = obj + 5
    val result2 = obj - 5
    println("result1 : $result1 .. result2 : $result2")

    println("${Test(30) + 5}")
}

위의 코드는 +와 - 연산자를 재정의한 코드이다. +는 -연산으로 -는 +연산으로 재정의한 코드이다.

실행하면 5, 15가 나오게 된다.

 

연산자 재정의 방법

1. 연산자에 대응하는 클래스 내부에 재정의하여 클래스의 멤버 함수로 추가하여 재정의

2. 클래스 외부에서 함수 확장으로 재정의 (이 때, operator라는 예약어를 사용)

 

 

 

반응형
LIST

'프로그래밍언어 > Kotlin' 카테고리의 다른 글

Kotlin 상속 (Kotlin Override) - 2  (0) 2019.07.28
Kotlin 상속 (Kotlin Override) - 1  (0) 2019.07.28
Kotlin에 대한 궁금증? (작성중)  (0) 2019.07.07
Kotlin 전개 연산자의 이해  (0) 2019.07.07
Kotlin Singleton  (0) 2019.01.03
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함