Modifier
1 Access Modifier
- 코틀린에는
public,private,protected,internal4가지의 접근 지시자가 있습니다. - 코틀린의 기본 가시성은
public입니다. - 자바의 기본 가시성인
package-private는 코틀린에 존재하지 않습니다. - 코틀린은 패키지를 네임스페이스를 관리하기 위한 용도로만 사용합니다.
package-private의 대안으로 코틀린에서는internal이라는 새로운 접근 지시자를 도입했습니다.internal은 모듈 내부에서만 볼 수 있음을 나타냅니다.- 여기서 모듈이란 한 번에 한꺼번에 컴파일 되는 코틀린 파일을 의미합니다.
- IntelliJ, 이클립스, 메이븐, gradle 등의 프로젝트가 모듈이 될 수 있습니다.
internal키워드의 주요 목적은 모듈 외부에 노출하지 않고 모듈 내부에서만 사용 할 수 있는 클래스나 함수를 정의하는 것입니다.- 이를 통해 모듈 외부로부터의 불필요한 접근을 방지하여 캡슐화와 코드의 안정성을 향상시킬 수 있습니다.
- 예를 들어, 어떤 라이브러리를 개발하는 경우에
internal클래스나 함수는 라이브러리 사용자가 볼 필요가 없는 내부 구현 세부사항을 숨기는 데 유용합니다. - 이렇게 함으로써 라이브러리의 API를 더 깔끔하게 유지할 수 있습니다.
- 예를 들어, 어떤 라이브러리를 개발하는 경우에
1.1 public
public은 어디서나 접근 가능한 가장 개방적인 접근 지시자입니다.- 클래스, 함수, 프로퍼티 등 모든 요소에 적용할 수 있습니다.
- 코틀린에서는 접근 지시자를 명시하지 않으면 기본적으로
public으로 간주됩니다. - 예를 들어,
public class MyClass와class MyClass는 동일한 의미입니다.
1.2 private
private은 선언된 클래스 내부에서만 접근 가능한 가장 제한적인 접근 지시자입니다.- 클래스 외부에서는 접근할 수 없으며, 상속받은 클래스에서도 접근이 불가능합니다.
- 파일의 최상위 수준에서 선언된
private요소는 해당 파일 내에서만 접근이 가능합니다.
예시
class MyClass {
private val secretValue = 42
fun accessSecret() {
println(secretValue) // 클래스 내부에서는 접근 가능
}
}
fun main() {
val instance = MyClass()
// println(instance.secretValue) // 컴파일 오류: private 접근 불가
}