-
Notifications
You must be signed in to change notification settings - Fork 0
internal의 범위는 어디까지일까?
이진혁 edited this page Jun 9, 2021
·
3 revisions
코틀린에서는 public(default)
, internal
, protected
, private
이라는 접근 제어 지시자를 제공합니다.
internal
을 제외한 모든 접근 제어 지시자는 익숙합니다.
자바에서 제공하는 package-private
을 대신한 것이라고도 생각했지만,
코틀린에서의 패키지는 클래스를 나누는 네임스페이스의 역할만 하기 때문에
package-private
이 존재할 수 없습니다.
internal
은 모듈 단위로 접근을 제어하는 것으로 module-private
이라고 부를 수도 있습니다.
그러면 이 모듈의 범위는 어디까지일까요?
모듈이라고 하면 자바 9에 추가된 모듈을 떠올릴 수도 있지만 가장 쉽게 떠오르는 것은
Gradle(그레이들)
프로젝트의 서브 프로젝트입니다.
그레이들을 이용하면 멀티 프로젝트를 구성하여 여러 프로젝트를 하나의 프로젝트 아래에 둘 수 있습니다.
이때 각 프로젝트를 모듈이라고 칭하는데 여기서 internal
로 선언하면 모듈끼리 접근이 안 될 것이라고 생각했습니다.
a-project
ㄴ b-project
ㄴ src
ㄴ com
ㄴ j
ㄴ research
ㄴ B.kt
ㄴ build.gradle.kts
ㄴ c-project
ㄴ src
ㄴ com
ㄴ j
ㄴ research
ㄴ C.kt
ㄴ build.gradle.kts
ㄴ build.gradle.kts
여기서 B
클래스의