32
오버로딩
디폴트 인자를 지원하지 않는 언어에서는 종종 디폴트 인자를 흉내 내기 위해 오버로딩을 활용한다.
overload(‘짐을 너무 많이 싣거나 무언가를 너무 많이 준다’는 뜻의 동사)라는 영어 단어는 함수의 이름을 대상으로 한다. 파라미터 목록이 여러 다른 함수에 같은 이름을 사용(이름을 ‘너무 많이 줌’)하는 게 오버로딩이다. 다음 예제는 f() 멤버 함수를 오버로딩한다.
Overloading/Overloading.kt
package overloading
import atomictest.eq
class Overloading {
fun f() = 0
fun f(n: Int) = n + 2
}
fun main() {
val o = Overloading()
o.f() eq 0
o.f(11) eq 13
}