본 글은 https://kotlinlang.org/docs/home.html 를 기반으로 작성자 마음대로 번역한 글입니다.
오역 & 의역이 빈번하며 모든 질문 및 태클 환영합니다!
2022-02-24 기준으로 작성되었습니다.
클래스, 오브젝트, 인터페이스, 생성자, 그리고 함수뿐만 아니라 프로퍼티와 setter까지도 visibility modifers를 가질 수 있습니다. getter는 프로퍼티와 같은 가시성을 가집니다.
코틀린에는 4가지의 가시성 지시자가 있습니다: private, protected, internal, 그리고 public.
이 페이지에서는, 지시자가 다양한 유형의 선언된 범위에 적용되는 방법을 학습합니다.
Packages
함수, 프로퍼티, 클래스, 오브젝트, 그리고 인터페이스는 패키지 내부의 "최상위 수준"에 직접적으로 선언될 수 있습니다.
- 가시성 지시자를 사용하지 않는다면, 선언이 어디서든 접근될 수 있는 public이 기본적으로 사용됩니다.
- private으로 선언한다면, 선언을 포함하는 파일 내부에서만 접근할 수 있습니다.
- internal로 선언한다면, 같은 module↗의 어디서든 접근할 수 있습니다.
- protected 지시자는 최상위 수준의 선언에서는 사용할 수 없습니다.
다른 패키지에서 접근 가능한 최상위 수준의 선언을 사용하기 위해서, import↗ 해야합니다.
예시:
Class members
클래스 내부에 선언된 멤버들
- private은 멤버가 (모든 멤버를 포함하여) 클래스 내부에서만 접근 가능하다는 것을 의미합니다.
- protected는 private과 같은 접근성을 가지지만 서브클래스에서도 접근 가능합니다.
- internal은 선언하는 클래스에 접근할 수 있는 모듈 내부의 모든 클라이언트가 internal 멤버에 접근 가능하다는 것을 의미합니다.
- public은 선언하는 클래스에 접근 가능한 모든 클라이언트가 public 멤버에 접근할 수 있다는 것을 의미합니다.
예시 :
- Constructors
클래스의 기본 생성자의 가시성을 구체화하기 위해서 다음과 같은 구문을 사용하세요.
명시적으로 constructor 키워드를 추가해야 합니다.
이 생성자는 private입니다. 기본적으로, 모든 생성자는 public 이며, 사실상 클래스에 접근 가능한 모든 위치에서 접근 가능합니다. (internal 클래스의 생성자는 같은 모듈에서만 접근 가능합니다.)
- Local declarations
지역 변수, 함수, 그리고 클래스는 가시성 지시자를 가질 수 없습니다.
Modules
internal 가시성 지시자는 같은 모듈의 멤버만 접근 가능하다는 것을 의미합니다. 더 구체적으로, 모듈은 함께 컴파일되는 코틀린 파일의 집합입니다. 예를 들어:
- IntelliJ IDEA 모듈
- Maven 프로젝트
- Gradle source set (test 소스가 internal인 main 선언에 접근할 수 있다는 것을 제외합니다.)
- <kotlinc> Ant tank 한번의 호출로 컴파일 되는 파일들의 집합
https://kotlinlang.org/docs/visibility-modifiers.html
Visibility modifiers | Kotlin
kotlinlang.org
'Kotlin > Docs' 카테고리의 다른 글
[Kotlin Docs] Data classes (0) | 2022.04.07 |
---|---|
[Kotlin Docs] Extensions (0) | 2022.04.07 |
[Kotlin Docs] Functional (SAM) interfaces (0) | 2022.02.17 |
[Kotlin Docs] Interfaces (0) | 2022.02.04 |
[Kotlin Docs] Properties (0) | 2022.02.03 |