[swift] 접근 제어

Swift에서는 접근 제어(Access Control)를 통해 모듈 간 인터페이스를 구성할 수 있습니다.

모듈(Module)

모듈(Module)은 코드의 독립적인 유닛으로, 단일 코드 베이스에서 모듈 당 하나 이상의 소스 파일로 구성됩니다. 각 모듈은 동일한 네임스페이스 안에서 모든 내용이 공유됩니다.

접근 수준(Access Levels)

Swift는 아래와 같은 5가지의 접근 수준(Access Levels)을 제공합니다.

  1. Open 접근 수준: 해당 모듈 외부에서도 해당 엔터티에 대한 참조를 허용하며, 해당 엔터티를 상속 받을 수 있습니다.
  2. Public 접근 수준: 해당 모듈 외부에서도 해당 엔터티에 대한 참조를 허용하지만, 해당 엔터티를 상속 받을 수 없습니다.
  3. Internal 접근 수준: 해당 모듈 내부에서만 해당 엔터티에 대한 참조를 허용합니다(기본적인 수준).
  4. File-private 접근 수준: 해당 엔터티를 정의한 소스 파일 내에서만 해당 엔터티에 대한 참조를 허용합니다.
  5. 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() {}
}

위 예제에서 SomePublicClassPublic 접근 수준을 갖는 반면, SomeInternalClass는 명시적으로 접근 수준을 지정하지 않아 Internal 접근 수준을 가집니다.

결론

Swift에서는 접근 제어를 통해 코드의 캡슐화를 진행하고, 안전한 모듈 간 상호작용을 지원합니다.

더 많은 정보는 Swift 공식 문서에서 확인하실 수 있습니다.