Swift

Swift: Swift의 접근 수준

소재훈 2022. 2. 15. 00:28

아래의 내용은 야곰님의 SWIFT 프로그래밍의 내용을 정리한 것입니다.

 

Swift에서 접근제어(Access Control)는 접근제어 키워드를 사용해서 구현할 수 있다.

타입(클래스, 구조체, 열거형,...)에 접근 수준을 지정할 수 있다.

타입 내부의 프로퍼티, 메서드, 이니셜라이저, 서브 스크립트 에도 접근 수준을 지정할 수 있다.

 

접근 수준을 나타내는 키워드로는 open, public internal, fileprivate, private 다섯 가지가 있다.

접근수준 키워드 접근도 범위 비고
개방 접근수준 open 위로 올라갈 수록
접근도가 높음
모듈 외부까지 클래스에서만 사용
공개 접근수준 public 모듈 외부까지  
내부 접근수준 internal 모듈 내부  
파일외부비공개 접근수준 fileprivate 파일 내부  
비공개 접근수준 private 기능 정의 내부  

 

공개 접근수준 - public

public 키워드로 접근 수준이 지정된 요소는 어디서든 쓰일 수 있다. 

구현된 소스파일, 소스파일에 속해 있는 모듈, 모듈을 쓰는 모든 곳에서 사용할 수 있다.

프레임워크와 외부와 연결될 인터페이스를 구현하는데 많이 쓰인다.

우리가 사용하는 스위프트의 기본요소는 모두 공개접근 수준으로 구현되어 있다.

 

개방 접근수준 - open

open 키워드로 지정하는 개방 접근 수준은 공개 접근 수준 이상의 높은 접근 수준이다.

클래스와 클래스의 멤버에서만 사용할 수 있다.

공개 접근수준과는 다음과 같은 차이가 있다.

  • 개방 접근수준을 제외한 다른 모든 접근 수준의 클래스는 그 클래스가 정의된 모듈 안에서만 상속할 수 있다.
  • 개방 접근수준을 제외한 다른 모든 접근 수준의 클래스 멤버는 해당 멤버가 정의된 모듈 안에서만 재정의 할 수 있다.
  • 개방 접근수준의 클래스는 그 클래스가 정의된 모듈 밖의 다른 모듈에서도 상속할 수 있다.
  • 개방 접근수준의 클래스 멤버는 해당 멤버가 정의된 모듈 밖의 다른 모듈에서도 재정의 할 수 있다.

클래스를 개방 수준으로 정의했다? 그러면 다른 모듈에서도 그 클래스를 상속할 수 있도록 하는 의도가 담겨있는 것이다.

 

내부 접근수준 - internal

internal 키워드로 지정하는 내부 접근수준은 기본적으로 모든 요소에 암묵적으로 지정하는 기본 접근 수준이다.

내부 접근 수준을 지정되면 소스파일이 속해있는 모듈 어디에서도 사용될 수 있다. 하지만 외부 모듈에서는 접근할 수 없다.

보통 내부에서 광역적으로 사용할 경우 내부 접근수준을 지정한다.

 

파일 외부 비공개 접근 수준 - fileprivate

그 요소가 구현된 소스파일 내부에서만 사용할 수 있도록 하는 접근 수준이다.

소스파일 외부에서 수정이 일어나면 문제가 발생할 수 있을 때 사용하면 좋다.

 

비공개 접근 수준 - private

접근수준 중에서 가장 한정적인 접근 수준이다.

비공개 접근 수준으로 지정된 요소는 기능을 정의하고 구현한 범위 내에서만 사용할 수 있다. 

같은 소스파일 안에 구현한 다른 타입이나 기능에서도 사용할 수 없다.

 

 

 

'Swift' 카테고리의 다른 글

Swift: private과 fileprivate  (0) 2022.02.21
Swift: 접근제어 구현 규칙  (0) 2022.02.15
Swift: 접근제어의 필요성  (0) 2022.02.14
Swift: 인스턴스 생성1  (0) 2022.02.12
Swift: 타입 메서드(Type Method)  (0) 2022.02.12