[iOS Swift] 접근 권한 (Access Control — Open, Public, Internal, Fileprivate, Private )에 대해서
접근 권한 ( Access Control) 이란 코드 접근을 제한 하기 위해 사용합니다. 어떠한 함수나 메소드를 제한적으로 사용하고 구현단계를 숨기기 위해 사용합니다. 이에는
- Open
- Public
- Internal
- Fileprivate
- Private
과 같은 종류가 있습니다.
이 글에서는 프로퍼티, 타입, 함수등과 같은 것들을 편의성을 위해 "엔티티(Entities)" 라고 칭하겠습니다.
Open과 Public
Open과 public은 어느 파일에서나 엔티티가 접근 가능합니다. 대게 public한 인터페이스나 프레임워크를 지정할 때 사용합니다.
Internal
Internal은 정의되어있는 모듈 안에서는 어느곳에서나 접근 가능하지만, 그 모듈 밖에서는 사용이 제한됩니다. 앱을 정의하거나 프레임워크의 내부적인 구조를 잡을 때 사용됩니다.
File-Private
File-private은 정의한 그 파일에서만 엔티티를 사용하게끔 제한합니다.
Private
Private은 엔티티를 그 선언 파일이나 익스텐션에서만 접근이 가능합니다.
가장 제한적이지 않은 접근 제어부터 제한적인 접근제어까지 나열을 해 본다면
(가장 제한적이지 않음)OpenPublicInternalFile-PrivatePrivate(가장 제한적)
Open은 가장 접근 제한이 제한되지 않는 (the least restrictive) 접근 레벨 입니다. Open을 사용하면 Open을 사용한 모듈을 서브클래싱하여 오버라이딩 할 수 있다는 점 입니다.