Kotlin/포스팅

코틀린 오버로딩

짜집퍼박사(짜박) 2023. 12. 17. 20:47

코틀린에서 함수 오버로딩(Function Overloading)은 동일한 이름의 함수를 여러 번 정의하는 것을 말합니다. 오버로딩을 사용하면 동일한 기능을 하는 함수들을 하나의 이름으로 통일할 수 있습니다. 오버로딩은 매개변수의 개수, 타입, 순서가 다르게 정의된 함수들을 의미하며, 반환 타입은 오버로딩에 영향을 주지 않습니다.

 

1. 매개변수의 개수로 오버로딩

fun sum(a: Int, b: Int): Int {
    return a + b
}

fun sum(a: Int, b: Int, c: Int): Int {
    return a + b + c
}

매개변수의 개수가 다른 두 개의 sum 함수입니다.

 

2. 매개변수의 타입으로 오버로딩

fun concatenate(a: String, b: String): String {
    return a + b
}

fun concatenate(a: Int, b: Int): String {
    return "$a$b"
}

매개변수의 타입이 다른 두 개의 concatenate 함수입니다.

 

3. 매개변수의 순서로 오버로딩

fun printDetails(name: String, age: Int) {
    println("Name: $name, Age: $age")
}

fun printDetails(age: Int, name: String) {
    println("Name: $name, Age: $age")
}

매개변수의 순서가 다른 두 개의 printDetails 함수입니다.

 

4. 디폴트 값이 있는 매개변수로 오버로딩

fun greet(name: String, greeting: String = "Hello") {
    println("$greeting, $name!")
}

fun greet(name: String, greeting: String = "Hi", times: Int = 1) {
    repeat(times) {
        println("$greeting, $name!")
    }
}

매개변수의 디폴트 값이 다른 두 개의 greet 함수입니다.

 

5. 가변 인자(varargs)로 오버로딩

fun sum(vararg numbers: Int): Int {
    return numbers.sum()
}

fun sum(message: String, vararg numbers: Int): Int {
    println(message)
    return numbers.sum()
}

가변 인자를 사용한 두 개의 sum 함수입니다.

 

6. 오버로딩의 주의사항

- 반환 타입만 다른 경우에는 오버로딩이 불가능합니다.
- 매개변수의 이름이나 디폴트 값이 다르면 오버로딩이 가능합니다.
- 오버로딩 시 함수 호출 시 어떤 버전의 함수를 호출할지 모호하지 않도록 주의해야 합니다.

 

오버로딩을 사용하면 함수 이름을 일관되게 유지하면서 여러 상황에서 동작하는 함수를 정의할 수 있습니다. 그러나 너무 많은 오버로딩은 코드의 가독성을 떨어뜨릴 수 있으므로 적절하게 사용하는 것이 중요합니다.

 

With ChatGPT

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

코틀린 가변인자 vararg 키워드  (0) 2023.12.17
코틀린 디폴트 값  (0) 2023.12.17
코틀린 위치 기반 인자와 이름 붙은 인자  (0) 2023.12.17
코틀린 확장 함수  (0) 2023.12.17
코틀린 로컬 함수  (0) 2023.12.17