[swift] 접근 제어
Swift에서는 접근 제어(Access Control)를 통해 모듈 간 인터페이스를 구성할 수 있습니다.
모듈(Module)
모듈(Module)은 코드의 독립적인 유닛으로, 단일 코드 베이스에서 모듈 당 하나 이상의 소스 파일로 구성됩니다. 각 모듈은 동일한 네임스페이스 안에서 모든 내용이 공유됩니다.
접근 수준(Access Levels)
Swift는 아래와 같은 5가지의 접근 수준(Access Levels)을 제공합니다.
- Open 접근 수준: 해당 모듈 외부에서도 해당 엔터티에 대한 참조를 허용하며, 해당 엔터티를 상속 받을 수 있습니다.
- Public 접근 수준: 해당 모듈 외부에서도 해당 엔터티에 대한 참조를 허용하지만, 해당 엔터티를 상속 받을 수 없습니다.
- Internal 접근 수준: 해당 모듈 내부에서만 해당 엔터티에 대한 참조를 허용합니다(기본적인 수준).
- File-private 접근 수준: 해당 엔터티를 정의한 소스 파일 내에서만 해당 엔터티에 대한 참조를 허용합니다.
- Private 접근 수준: 해당 엔터티를 정의한 범위 내에서만 해당 엔터티에 대한 참조를 허용합니다.
예제
public class SomePublicClass {
public var somePublicProperty: Int = 0
var someInternalProperty: Int = 0
fileprivate func someFilePrivateMethod() {}
private func somePrivateMethod() {}
}
class SomeInternalClass {
var someInternalProperty: Int = 0
fileprivate func someFilePrivateMethod() {}
private func somePrivateMethod() {}
}
위 예제에서 SomePublicClass
는 Public
접근 수준을 갖는 반면, SomeInternalClass
는 명시적으로 접근 수준을 지정하지 않아 Internal
접근 수준을 가집니다.
결론
Swift에서는 접근 제어를 통해 코드의 캡슐화를 진행하고, 안전한 모듈 간 상호작용을 지원합니다.
더 많은 정보는 Swift 공식 문서에서 확인하실 수 있습니다.