본문 바로가기
Swift

[Swift] 접근제어 (Access Control)

by Sky Titan 2021. 1. 17.
728x90
스위프트 프로그래밍
국내도서
저자 : 야곰
출판 : 한빛미디어 2019.10.01
상세보기

접근제어 (Access Control)

  • 접근제어란 코드끼리 상호작용을 할 때 파일 간 또는 모듈 간에 접근을 제한할 수 있는 기능
  • 코드의 상세 구현은 숨기고 허용된 기능만 사용하는 인터페이스 제공
  • 객체지향 프로그래밍 패러다임의 은닉화를 구현하기 위한 중요 개념

 

모듈 (Module)

  • 배포할 코드의 묶음 단위
  • 통상 하나의 프레임워크 (Framework), 라이브러리 (Library), 애플리케이션 (Application)이 모듈 단위가 될 수 있음
  • import 키워드로 불러옴

 

소스 파일

  • 하나의 스위프트 소스코드 파일
  • 기존 자바와 같은 언어에서는 한 파일에 하나의 타입만 선언하지만 스위프트에서는 한 파일에 여러 개의 타입을 선언 가능

 

접근 수준

접근수준 키워드 접근도 범위 비고
개방 접근수준 open 위 : 높음
아래 : 낮음
모듈 외부까지 - 클래스에서만 사용
- 확장 가능
공개 접근수준 public 모듈 외부까지  
내부 접근수준 Internal 모듈 내부 - 같은 framework, 프로젝트
- default
파일외부비공개 접근 수준 fileprivate 파일 내부 - 같은 소스파일(.swift)
비공개 접근수준 private 기능 정의 내부 - 같은 클래스, 구조체 등

 

1. public - 공개 접근수준

  • 어디에서든 접근 가능
  • 주로 프레임워크에서 외부와 연결될 인터페이스를 구현하는데 많이 쓰임

 

2. open - 개방 접근수준

  • public보다 높은 접근수준
  • 클래스, 클래스 멤버에서만 사용 가능
  • public과의 차이점
    1. 클래스가 정의된 모듈 밖에서도 상속 가능
    2. 해당 멤버가 정의된 모듈 밖의 다른 모듈에서도 재정의 가능
  • 즉 다른 모듈에서도 부모 클래스로 사용하겠다는 목적

 

3. internal (default) - 내부 접근수준

  • 기본적으로 모든 요소에 암묵적으로 지정되는 기본(default) 접근수준
  • 소스파일이 속해있는 모듈 어디에서든 접근 가능
  • 외부 모듈 접근 x
  • 모듈 내부에서 광역적으로 사용되는 경우

 

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

  • 해당 요소가 구현된 소스파일 내부에서만 사용 가능
  • 해당 소스파일 외부에서 값이 변경 혹은 함수를 호출할 경우 부작용이 예상될 때 사용

 

5. private - 비공개 접근수준

  • 가장 좁은 접근 범위 가짐
  • 해당 요소를 정의하고 구현한 범위 내에서만 사용 가능
  • 같은 소스파일 안에 구현한 다른 타입이나 기능에서도 사용 불가능

 

728x90

'Swift' 카테고리의 다른 글

[Swift] 오류처리 (Error Handling)  (0) 2021.01.28
[Swift] 서브스크립트 (Subscript)  (0) 2021.01.17
[Swift] 프로토콜 (Protocol)  (0) 2021.01.02
[Swift] 구조체와 클래스  (0) 2020.12.28
[Swift] 범위 연산자  (0) 2020.12.28

댓글