[swift] 접근 제어 규칙
Swift에서는 접근 제어를 통해 코드의 일부를 다른 코드로부터 숨기거나, 외부에서 접근할 수 있도록 하는 등의 제어가 가능합니다. 이는 소프트웨어의 모듈화, 유지보수성 및 보안에 도움이 됩니다.
접근 제어 수준
Swift에서는 다음과 같은 다섯 가지의 접근 제어 수준을 제공합니다:
- Open: 모듈 외부에서도 접근 가능하며, 상속 및 재정의가 가능합니다.
- Public: 모듈 외부에서 접근 가능하지만 상속 및 재정의는 제한됩니다.
- Internal: 같은 모듈 내에서만 접근 가능합니다. 기본적으로 이 접근 제어 수준이 적용됩니다.
- File-private: 같은 파일 내에서만 접근 가능합니다.
- Private: 가장 제한적인 접근 수준으로, 같은 선언 내에서만 접근 가능합니다.
public class SomePublicClass {}
internal class SomeInternalClass {}
fileprivate class SomeFilePrivateClass {}
private class SomePrivateClass {}
접근 제어 수준 지정
변수, 상수, 함수, 그리고 타입에 접근 제어 수준을 지정할 수 있습니다. 기본적으로는 internal 접근 제어 수준이 적용되며, 필요에 따라 명시적으로 지정할 수 있습니다.
public var myPublicVariable: Int
internal let myInternalConstant: Int
fileprivate func myFilePrivateFunction() {}
private class myPrivateClass {}
접근 제어 수준과 상속
부모 클래스의 접근 제어 수준보다 자식 클래스의 접근 제어 수준이 높을 수 없습니다. 또한, 오버라이딩한 멤버의 접근 제어 수준은 부모 클래스보다 더 높을 수 없습니다.
모듈 외부 접근 제어
모듈 외부에서 접근 가능한 기능과 타입을 정의할 때는, 명시적으로 public 접근 제어 수준을 지정해주어야 합니다. 그 외의 경우에는 모듈 외부에서는 접근할 수 없습니다.