위 예제의 Overloading에서 이름이 같은 두 가지 f() 함수를 볼 수 있다. 함수의 시그니처(signature)는 함수 이름, 파라미터 목록, 반환 타입으로 이뤄진다. 코틀린은 시그니처를 비교해서 함수와 함수를 구분한다. 함수를 오버로딩할 때는 함수 파라미터 리스트를 서로 다르게 만들어야 한다. 함수의 반환 타입은 오버로딩의 대상이 아니다.
위 예제에서 함수를 호출하는 부분을 보면 서로 정말 다른 함수임을 알 수 있다. 함수 시그니처는 함수를 둘러싸고 있는 클래스(확장 함수의 경우 수신 객체 타입)도 포함한다.
어떤 클래스 안에 확장 함수와 시그니처가 똑같은 멤버 함수가 들어 있으면 코틀린은 멤버 함수를 우선시한다. 하지만 확장 함수를 갖고 멤버 함수를 오버로딩할 수 있다.