더북(TheBook)

Overloading/MemberVsExtension.kt

package overloading
import atomictest.eq

class My {
  fun foo() = 0
}

fun My.foo() = 1           // [1]

fun My.foo(i: Int) = i + 2 // [2]

fun main() {
  My().foo() eq 0
  My().foo(1) eq 3
}

[1] 멤버와 시그니처가 중복되는 확장 함수를 호출해도 의미가 없다. 이런 확장 함수는 결코 호출될 수 없다.

[2] 다른 파라미터 목록을 제공함으로써 멤버 함수를 확장 함수로 오버로딩할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.