티스토리 뷰
[시작]
- 객체 지향 프로그래밍 패러다임의 '은닉화'와 관련됨
[접근제어]
- 파일 간 / 모듈 간 접근을 제한
- 코드의 상세 구현은 숨기고 허용된 기능만 사용하는 인터페이스를 제공함
- 모듈 : 배포할 코드의 묶음 단위
: 하나의 프레임워크나 라이브러리 또는 애플리케이션
: import 키워드를 사용해 불러오는 것
- 소스파일 : 하나의 Swift 소스 코드 파일
[접근수준]
- 각 타입(클래스, 구조체, 열거형 등)에 특정 접근수준을 지정할 수 있음
- 타입 내부의 프로퍼티, 메서드, 생성자, 서브스크립트 각각에 접근수준을 지정할 수 있음
- open / public / internal / fileprivate / private
1. public : 공개 접근 수준
: 어디서든 쓰일 수 있음
: 주로 프레임워크에서 외부와 연결될 인터페이스를 구현하는 데 사용됨
2. open : 개방 접근 수준
: public 이상으로 높은 접근수준
- 다른 모듈에서 해당 클래스를 상속하여 사용할 수 있음
- 다른 모듈에서 해당 클래스 멤버를 재정의하여 사용할 수 있음
: 클래스와 클래스의 멤버에서만 사용 가능
3. internal : 내부 접근수준
: 기본 접근수준
: 소스파일이 속해 있는 모듈 어디서든 쓰일 수 있음
4. fileprivate : 파일외부비공개 접근수준
: 해당 요소가 구현된 소스파일 내부에서만 사용 가능
5. private : 비공개 접근수준
: 해당 기능을 정의하고 구현한 범위 내에서만 사용 가능
[접근제어 구현 참고사항]
- 상위 요소보다 하위 요소가 더 높은 접근수준을 가질 수 없음
- 같은 타입의 익스텐션에서는 private 요소에 접근 가능
- 프로퍼티에서 set 메서드의 접근수준을 낮추어 읽기 전용 프로퍼티를 구현할 수 있음
- 요소의 접근수준 키워드 뒤에 [접근수준](set) 과 같이 표현함
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | public struct SomeType{ private var count: Int = 0 public var publicStoredProperty: Int = 0 public private(set) var publicGetOnlyStoredPropety: Int = 0 internal var internalComputedProperty: Int{ get{ return count } set{ count += 1 } } internal private(set) var internalGetOnlyComputedProperty: Int{ get{ return count } set{ count += 1 } } public subscript()-> Int{ get{ return count } set{ count += 1 } } public internal(set) subscript(some: Int) -> Int{ get{ return count } set{ count += 1 } } } | cs |
'Swift > 야곰의 스위프트' 카테고리의 다른 글
14장 옵셔널 체이닝과 빠른 종료 (0) | 2018.02.12 |
---|---|
13장 클로저 (0) | 2018.02.12 |
11장 인스턴스 생성 및 소멸 (0) | 2018.02.05 |
10장 프로퍼티와 메서드 (0) | 2018.02.03 |
9장 구조체와 클래스 (0) | 2018.02.03 |