접근 제한자는 다른 소스 파일이나 모듈의 코드에서 코드 일부분에 대한 접근을 제어하기 위해 사용된다.
접근제한자의 종류
접근 제한자는 총 5가지로 이루어져있으며 아래는 접근 제한자에 대한 설명이 적혀있다.
1. open
open은 모든 소스 파일에서 해당 level 접근이 가능하며 모든 곳에서 서브 클래싱이 가능하다.
2. public
모든 소스 파일에서 해당 level 접근이 가능하며, open 과는 다르게 같은 모듈 내에서만 서브 클래싱이 가능하다.
3. internal
같은 모듈 내에서만 접근이 가능하다.
4. fileprivate
같은 소스파일 내에서만 접근이 가능하다.
5. private
클래스 내부에서만 접근이 가능하다.
접근 제한자를 적지 않으면 기본적으로 internal로 판단한다. 또한 상위 요소보다 하위 요소가 더 높은 접근 수준을 가질 수 없다.
// 예시
private struct Car {
public var model: String // 에러 발생
}
모듈과 소스파일
모듈
모듈은 배포할 코드의 묶음 단위이다. 하나의 프레임워크/라이브러리/어플리케이션이 모듈 단위가 될 수 있다. 그리고 모듈은 import 키워드를 통해 불러올 수 있다.
소스파일
하나의 swift 소스 코드 파일을 의미한다.
public, open
public 과 open 둘 다 모듈 외부까지 접근할 수 있다.
open은 클래스와 클래스 멈버에서만 사용할 수 있고, 다른 모듈에서 서브클래싱이 가능하지만, public 은 그렇지 않다. open으로 클래스를 개방 접근 수준으로 명시하는 것은 그 클래스의 다른 모듈에서도 슈퍼클래스로 사용하겠다는 의미로 해당 클래스를 설계하고 만들었다는 것을 의미한다.(다른 모듈에서 상속을 허용함)
public은 주로 프레임워크에서 외부와 연결될 인터페이스를 구현하는데 많이 사용한다.
internal
모든 요소에 암묵적으로 지정하는 디폴트 접근 제어자로, 소스 파일이 속해있는 모듈 어디에든 접근할 수 있지만 외부 모듈에서는 접근할 수 없다.
fileprivate
소스 파일 내부에서만 접근할 수 있다. 서로 다른 클래스가 같은 하나의 소스파일에 정의되어 있고, fileprivate 로 선언되어 있다면 두 클래스는 서로 접근할 수 있다.
private
가장 제한적인 접근 제어자로 fileprivate 과 달리 같은 파일 안에 있어도 서로 다른 클래스이고 private 로 선언되어 있다면 두 요소는 서로 접근할 수 없다.
'swift' 카테고리의 다른 글
| 스위프트 UIKit (0) | 2024.06.21 |
|---|---|
| swift 프로토콜 (0) | 2024.06.14 |
| Swift 프로퍼티 옵저버 (0) | 2024.06.12 |
| Swift 카카오 로그인 (1) | 2024.05.10 |
| 스위프트 IBAction 및 IBOutlet (1) | 2024.04.19 |