728x90
반응형
안녕하세요! 개발하는 윤기사입니다 ㅎㅎ
어제 블로그 포스팅에 이어서 바로 또 포스팅하게 되었는데요!
아주 알찬 내용을 가지고 왔습니다! 간단한 내용이니 빠르게 알아가실 수 있을 겁니다.
접근 제어자에 대한 내용을 가지고 왔답니다!!
- 접근 제어자 (Access Control) -
🍎 접근제어 왜 사용하나요??
- Source File 및 Module 코드에서 코드의 일부에 대한 접근을 제한하고자 할 때 사용됩니다!
- 외부에서 보거나 접근하면 안 되는 코드에 잘못 접근하여 의도치 않은 오류가 발생할 수 있을 때 사용됩니다!
- 코드의 상세 내용을 숨길 수 있으며 코드의 불필요한 외부 노출을 제한함으로써 은닉화의 특성을 구현할 수 있습니다!
- 즉, 명시적으로 코드의 세부적 구현은 숨길 수 있고, 기본 인터페이스를 지정할 수 있습니다!
🍎 접근제어 수준은 어떻게 사용하나요??
- Module
- import를 통해 우리 프로젝트에서 사용할 수 있는 형태의 코드 묶음 단위
- 우리의 프로젝트도 하나의 모듈로 볼 수 있고, 프레임워크 하나를 하나의 모듈로 볼 수 있다.
- open, public을 통해 프로젝트에 접근할 수 있다.
- Source File
- 하나의 프로젝트 내에서 코드 제어를 할 경우, internal, fileprivate, private로 소스 파일에 대한 코드 제어를 할 수 있다!
🛠 한 가지 주의해야 할 점!! 바깥의 접근 레벨보다 내부의 접근 레벨이 더 높을 수는 없습니다!!
접근 수준 | 접근 수준 명시 keyword |
개방 접근 수준 | open |
공개 접근 수준 | public |
내부 접근 수준 | internal(default) |
파일 내부 접근 수준 | fileprivate |
비공개 접근 수준 | private |
1. open - 개방 접근 수준
- open은 public 이상으로 높은 접근 수준입니다.
- 클래스와 클래스의 멤버에서만 사용할 수 있습니다.
- open으로 선언한 클래스는 그 클래스가 정의된 모듈 밖의 다른 모듈에서도 상속할 수 있습니다.
- open으로 선언한 클래스의 클래스 멤버는 해당 멤버가 정의된 모듈 밖의 다른 모듈에서도 오버 라이딩할 수 있습니다.
2. public - 공개 접근 수준
- public 키워드로 접근 수준이 지정된 요소는 어디서든 쓰일 수 있습니다.
- public은 주로 프레임워크에서 외부와 연결될 인터페이스를 구현하는데 많이 쓰입니다.
- public으로 선언할 경우, 상속받을 수도, 오버 라이딩할 수도 없습니다!
3. internal - 내부 접근 수준
- internal은 별도로 접근 제어를 선언하지 않은 경우, default로 설정되는 접근 레벨입니다!
- internal로 지정된 요소는 소스파일이 속해 있는 모듈 어디에서든 쓰일 수 있습니다.
- 같은 모듈 내에서는 internal일 경우 어떤 파일에서도 코드에 대한 접근이 가능하며 클래스 상속도 받을 수 있습니다.
4. fileprivate - 파일 외부 비공개 접근 수준
- 하나의 스위프트 파일 내부에서만 접근 가능한 레벨입니다!
- 해당 소스파일 외부에서 값이 변경되거나 함수를 호출하면 부작용이 생길 수 있는 경우에 사용하면 좋습니다.
5. private - 비공개 접근 수준
- private은 가장 한정적인 레벨입니다.
- private으로 지정된 요소는 그 기능을 정의하고 구현한 블록 내에서만 사용할 수 있습니다.
- private으로 지정한 기능은 같은 소스파일 안에 구현한 다른 타입이나 기능에서도 사용할 수 없습니다.
이상 접근 제어자에 대한 포스팅을 마치겠습니다!!
오늘도 윤기사는 빡코딩하겠습니다~! 다들 여름 감기 조심하세요 😎
728x90
반응형
'iOS_Swift 앱개발👍' 카테고리의 다른 글
[iOS_Swift] 예외처리(throw, do_catch, try) _ 22 (30) | 2022.08.24 |
---|---|
[iOS_Swift] 타입 캐스팅(Type Casting)의 모든 것 _ 21 (31) | 2022.08.18 |
[iOS_Swift] Map Kit View _ 19 (0) | 2022.08.15 |
[iOS_Swift] View의 Frame & Bounds 차이 _ 18 (30) | 2022.08.12 |
[iOS_Swift] UIView를 Cell로 사용하기 (테이블뷰 안에 컬렉션뷰) _ 17 (30) | 2022.08.09 |