14. 접근제어
아마 자바의 public private 처럼 접근을 제어하는 기능이 swift에도 존재를 하는 것 같다.
파일 간 또는 모듈 간에 접근을 제한할 수 있는 기능이라고 한다.
접근제어를 사용하는 이유는
객체지향에선 캡슐화, 은닉화를 구현하는 이유는 외부에서 보거나 접근하면 안 되는 코드가 있기 때문이다.
전체 코드가 노출될 가능성이 있을 때 접근제어를 사용한다고 한다.
14.2 접근수준
클래스, 구조체, 열거형, 프로퍼티, 메서드, 이니셜라이저, 스브스크립트 각각에도 접근수준을 지정할 수 있습니다.
open, public, internal, fileprivate, private 다섯 가지가 있습니다.
14.2.1 공개접근수준 - public
public키워드로 지정된 요소는 어디서든 쓰일 수 있습니다.
14.2.2 개방 접근수중 - open
클래스와 클래스의 멤버에서만 사용 할 수 있습니다.
클래스를 개방 접근 수준으로 명시하는 것은 그 클래스를 다른 모듈에서도 부모클래스로 사용하겠다는 목적으로 클래스를 설계하였다는 것입니다.
다른 모듈에서 같은 부모 클래스를 사용하게끔 작성 할 일이 있을까?
프레임워크에서는 있겠지만 실제로는 사용하지 않을 것 같다.
14.2.3 내부 접근수준 - internal
internal 키워드 지정하는 내부 접근수준은 기본적으로 모든 요소에 암묵적으로 지정되는 기본 접근 수준입니다.
모듈 어디에서든 쓰일 수 있지만, 모듈을 가져다 쓰는 외부 모듈에서는 접근 할 수 없습니다.
14.2.4 파일외부 비공개 접근 수준 -fileprivate
소스파일 내부에서만 사용 할 수 있습니다. 값이 변경되거나 함수를 호출하면 부작용이 생길 수 있는 경우에 사용하면 좋습니다.
14.2.5 비공개 접근수준 - private
가장 한정적인 범위입니다.
기능을 정의하고 구현한 범위 내에서만 사용 할 수 있습니다. 소스파일 안에 구현한 다른타입이나 기능에서도 사용 할 수 없습니다.
개인적으로 private만 자주 사용하는 것 같다.
'Swift > Swift 기본문법' 카테고리의 다른 글
Swift 기본 문법 - 16. 맵,필터,리듀서 (0) | 2022.02.04 |
---|---|
Swift 기본 문법 - 15. Closure (0) | 2022.02.03 |
Swift 기본 문법 - 13. 인스턴스의 생성과 소멸 (0) | 2022.02.01 |
Swift 기본 문법 - 12. 프로퍼티와 메서드 (0) | 2022.01.30 |
Swift 기본 문법 - 11. 구조체와 클래스 (0) | 2022.01.30 |