더북(TheBook)

경우에 따라 프로젝트의 나머지 부분으로부터 구현 상세 내용을 숨겨서 보호하고 싶을 때가 있다. 이렇게 하면 함수의 영역을 줄일 수 있고, 코드에서 함수가 쓰일 수 있는 위치를 제한할 수 있다. 이를 위해 최상위 함수 정의 앞에 privateinternal이라는 키워드를 붙일 수 있다. 이런 키워드를 가시성 변경자(visibility modifier)라고 부른다.

최상위 함수를 비공개(private)로 정의하면 함수가 정의된 파일 안에서만 해당 함수를 볼 수 있다. 예를 들어 readInt()를 비공개로 선언하면, util.kt 안에서는 이 함수를 쓸 수 있지만 main.kt에서는 이 함수를 쓸 수 없다(그림 3-3).

▲ 그림 3-3 어떤 파일에 정의된 비공개 함수를 다른 파일에서 호출하기

internal 변경자를 적용하면 함수가 적용된 모듈 내부에서만 함수를 사용할 수 있게 제한한다. 코틀린에서 모듈은 기본적으로 함께 컴파일되는 파일 전부를 뜻한다. ‘함께 컴파일된다’라는 말의 구체적인 의미는 프로젝트에서 모듈 내의 파일을 모으는 빌드 시스템에 따라 달라진다. 하지만 인텔리J IDEA의 경우에는 한 IDE 모듈을 뜻한다. 따라서 어떤 함수를 내부(internal) 함수로 선언하면 같은 모듈에 속한 다른 파일에서는 이 함수를 사용할 수 있지만, 같은 프로젝트의 다른 모듈에서는 사용할 수 없다.

IDE 팁 ≡

1장 강력하고 실용적인 코틀린에서 설명했던 새 프로젝트 마법사와 비슷한 방식으로 File > New > Module 마법사를 사용하면 별도의 모듈을 만들 수 있다.

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