접근 제어
- Swift의 접근제어 → 모듈과 소스파일을 기반
- 모듈: 배포할 코드의 묶음 단위 (프레임워크, 라이브러리, 어플리케이션), import를 사용하여 불러옴
- 소스파일 → 하나의 Swift 소스 코드 파일
Keyword |
접근도
|
범위 | 비고 |
open |
높음
↕︎ 낮음
|
모듈 외부까지 | 클래스에서만 사용 가능 |
public | |||
internal | 모듈 내부 | ||
filePrivate | |||
private | 기능 정의 내부 |
- open
- 클래스와 클래스 멤버에서만 사용
- 정의된 모듈 밖에서도 상속 가능
- 다른 모듈에서도 부모 클래스로 사용할려는 목적으로 설계하면 open 사용
- public
- 소스파일 / 소스에 속해있는 모듈, 그 모듈을 가져다 쓰는 모듈 등에서 사용
- 주로 프레임워크에서 외부와 연결될 인터페이스를 구현하는데 쓰임
- 프레임워크를 만들때는 API로 사용할 기능을 public로 지정, 외의 요소는 internal 이나 private으로 설정
- internal
- 소스파일이 속해 있는 모듈 어디서든 사용 가능 (기본 접근 수준)
- filePrivate: 같은 파일 어떤 코드에서도 접근 가능
- 구현된 소스파일 내부에서만 사용
- private: 같은 파일 내부에 다른 타입 코드가 있어도 접근 불가능
- 구현된 소스파일 내부에서만 사용, 구현한 타입이나 기능 안이어야 함
- extension에서는 private 요소 접근 가능