코틀린에서 함수 오버로딩(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 |