[Kotlin] 함수 오버로딩

최율·2022년 9월 14일

Kotlin

목록 보기
2/10

오버로딩이란?

동일한 이름의 함수를 파라미터의 개수, 타입 등에 따라 여러 버전으로 정의하는 프로그래밍.

오버로딩의 예는 다음과 같다.

fun sum(a:Int, b:Int):Int = a + b
fun sum(a:Double, b:Double): Double = a + b

fun main(){
    println(sum(1,2)) // 3
    println(sum(1.0,2.0)) // 3.0
}

같은 이름(sum)을 가진 두 함수가 있다. 그 둘의 차이는 오직 파라미터의 데이터 타입이다.
첫번째 함수는 정수를 파라미터로 받아 그 둘의 합을 리턴하고, 두번째 함수는 Double을 파라미터로 받아 그 둘의 합을 리턴한다.

위의 예시는 파라미터의 데이터 타입이 다른 경우에 적용 가능한 오버로딩이며, 파라미터의 개수가 다른 예시는 다음과 같다.

fun sum(a:Int, b:Int):Int = a + b
fun sum(a:Int, b:Int, c:Int): Int = a + b + c

fun main(){
    println(sum(1,2)) // 3
    println(sum(1,2,3)) // 6

함수 호출 시 컴파일러의 동작은 다음과 같이 진행된다.

  1. 파라미터의 개수와 타입을 기준으로 호출할 수 있는 모든 함수를 찾는다.
  2. 덜 구체적인 함수를 제외한다. (좀 더 specific한 함수를 찾음)
  3. 하나가 남으면 그 함수를 호출하고, 2개 이상 남으면 에러를 호출한다.
profile
공부한 것을 기록하고 공유하는 학생입니다!

0개의 댓글