안드로이드, internal vs private – @Composable/Android
코틀린에서 internal과 private는 접근 제어자(visibility modifier)로, 클래스, 함수, 프로퍼티 등의 접근 범위를 제어합니다. 이 두 접근 제어자의 차이점은 다음과 같습니다
internal
범위
동일한 모듈 내에서 접근 가능합니다.
설명
internal로 선언된 멤버는 같은 모듈 내의 다른 클래스나 파일에서 접근할 수 있습니다. 모듈은 한 번에 컴파일되는 Kotlin 코드의 집합을 의미하며, 일반적으로 하나의 Gradle 프로젝트나 Maven 프로젝트를 나타냅니다.
사용 예
internal class InternalClass {
internal val internalProperty = "This is internal"
internal fun internalFunction() {
println("This function is internal")
}
}
private
범위
동일한 클래스 또는 파일 내에서만 접근 가능합니다.
설명
private으로 선언된 멤버는 해당 클래스 내에서만 접근할 수 있습니다. 파일 수준에서 private으로 선언된 멤버는 동일한 파일 내의 다른 코드에서 접근할 수 없습니다.
사용 예
class PrivateClass {
private val privateProperty = "This is private"
private fun privateFunction() {
println("This function is private")
}
fun accessPrivate() {
// 같은 클래스 내에서는 private 멤버에 접근 가능
println(privateProperty) privateFunction()
}
}
요약
internal: 같은 모듈 내에서 접근 가능.
private: 같은 클래스 또는 파일 내에서만 접근 가능.
이를 통해 코드의 캡슐화 수준을 조절하고, 코드의 의도치 않은 사용을 방지하여 유지 보수성을 높일 수 있습니다.