Swift.Access Control

junseole·2021년 8월 12일
0

Swift-Basic

목록 보기
5/12
post-thumbnail

스위프트 프로그래밍 3판을 보고 정리한 내용입니다.

접근 제어

​ 코드끼리 상호작용할 때 파일 간 모듈 간에 접근을 제한할 수 있는 기능

필요성

OOP에서 중요한 캡슐화와 은닉화를 구현한 이유는 외부에서 보거나 접근하면 안되는 코드이기 때문

불필요한 접근으로 의도치 않은 결과를 초래하거나 꼭 필요한 부분만 제공을 해야하는데 전체 코드가 노출될 가능성이 있을 때 접근제어를 이용한다.

모듈과 소스파일

스위프트의 접근제어는 모듈과 소스파일을 기반으로 설계되었다.

모듈은 배포할 코드의 묶음 단위 (import를 이용해 불러온다)

소스파일은 하나의 스위프트 소스 코드 파일을 의미한다.

접근 수준

접근 제어는 접근 수준(Access Level)키워드를 통해 구현할 수 있다.

접근 수준을 명시할 수 있는 키워드는 open,public,internal,fileprivate,private 가 있다.

접근 수준키워드접근도범위비고
개방 접근수준open높음모듈 외부까지클래스에서만 사용
공개 접근수준puiblic모듈 외부까지
내부 접근수준Internal모듈 내부
파일외부비공개 접근수준fileprivate파일 내부
비공개 접근수준private낮음기능 정의 내부

개방 접근 수준(open)

public 이상으로 높은 접근수준이며, 클래스와 클래스의 맴버에서만 사용할 수 있다.

클래스를 개방 접근수준으로 명시하는 것은 다른 모듈에서도 부모클래스로 사용하겠다는 목적으로 클래스를 설계하고 코드를 작성했음을 의미한다.

공개 접근 수준(public)

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

주로 외부와 연결될 인터페이스를 구현하는데 많이 쓰인다.

내부 접근 수준(internal)

기본적으로 모든 요소는 암묵적으로 지정하는 기본 접근 수준이다.

소스파일이 속해 있는 모듈 어디에서든 쓰일 수 있다.

외부 모듈에서는 접근 불가

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

파일외부비공개 접근 수준으로 지정된 요소는 그 요소가 구현된 소스파일 내부에서만 사용 가능하다.

해당 소스파일 외부에서 값이 변경되거나 함수를 호출하면 부작용이 생길수 있는 경우에만 사용하는 것이 좋다.

비공개 접근수준(private)

가장 한정적인범위이다.

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

접근제어 구현 참고사항

상위 요소보다 하위 요소가 더 높은 접근수준을 가질 수 없다.

profile
Swift와 함께 여행중입니다.

0개의 댓글