[kotlin] 코틀린에서 접근 제한자를 사용하여 다른 모듈에 영향을 줄 수 있는지 알려주세요.
public
(기본 제한자): 어떤 모듈에서든 접근 가능internal
: 같은 모듈 내에서만 접근 가능protected
: 하위 클래스에서만 접근 가능하며, 동일 모듈 내에서도 접근 가능private
: 같은 파일 내에서만 접근 가능
만약 여러 모듈이 각각의 외부 API에 접근할 수 있는 상황이라면, public
제한자를 사용하여 외부에서 접근할 수 있는 API를 정의할 수 있습니다. 반면에 다른 모듈에 영향을 주지 않고 재사용되거나 모듈 내부적으로만 사용되는 요소가 있다면, internal
제한자를 사용하세요.
아래는 간단한 예시 코드입니다.
// ModuleA.kt
package com.example.moduleA
internal class InternalClassA {
// 내부에서만 접근 가능한 클래스
}
public class PublicClassA {
// 외부에서 접근 가능한 클래스
}
// ModuleB.kt
package com.example.moduleB
import com.example.moduleA.PublicClassA
import com.example.moduleA.InternalClassA // 오류! moduleA의 접근 제한자에 따라 접근 불가
fun main() {
val publicObj = PublicClassA() // moduleA의 public 클래스에 접근 가능
}
이와 같이 다른 모듈에서 InternalClassA
에 접근할 수 없습니다. 따라서 접근 제한자를 통해 모듈 간의 영향을 줄이고 코드를 더 안정적으로 유지할 수 있습니다.
더 자세한 내용은 Kotlin 공식 문서(https://kotlinlang.org/docs/reference/visibility-modifiers.html)를 참고하시기 바랍니다.