Bookmark profile

코틀린에서 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: 같은 클래스 또는 파일 내에서만 접근 가능.

이를 통해 코드의 캡슐화 수준을 조절하고, 코드의 의도치 않은 사용을 방지하여 유지 보수성을 높일 수 있습니다.