본문 바로가기
iOS_Swift 앱개발👍

[iOS_Swift] 접근 제어자(Access Control) _ 20

by 개발하는윤기사 2022. 8. 16.
728x90
반응형

안녕하세요! 개발하는 윤기사입니다 ㅎㅎ

 

어제 블로그 포스팅에 이어서 바로 또 포스팅하게 되었는데요!

 

아주 알찬 내용을 가지고 왔습니다! 간단한 내용이니 빠르게 알아가실 수 있을 겁니다.

 

접근 제어자에 대한 내용을 가지고 왔답니다!!

 

이러지 않도록!!

 

 

- 접근 제어자 (Access Control) -

 

🍎 접근제어 왜 사용하나요??

  • Source File 및 Module 코드에서 코드의 일부에 대한 접근을 제한하고자 할 때 사용됩니다!
  • 외부에서 보거나 접근하면 안 되는 코드에 잘못 접근하여 의도치 않은 오류가 발생할 수 있을 때 사용됩니다!
  • 코드의 상세 내용을 숨길 수 있으며 코드의 불필요한 외부 노출을 제한함으로써 은닉화의 특성을 구현할 수 있습니다!
  • 즉, 명시적으로 코드의 세부적 구현은 숨길 수 있고, 기본 인터페이스를 지정할 수 있습니다!

 

🍎 접근제어 수준은 어떻게 사용하나요??

  • Module
  • import를 통해 우리 프로젝트에서 사용할 수 있는 형태의 코드 묶음 단위
  • 우리의 프로젝트도 하나의 모듈로 볼 수 있고, 프레임워크 하나를 하나의 모듈로 볼 수 있다.
  • open, public을 통해 프로젝트에 접근할 수 있다.
  • Source File
  • 하나의 프로젝트 내에서 코드 제어를 할 경우, internal, fileprivate, private로 소스 파일에 대한 코드 제어를 할 수 있다!

 

🛠 한 가지 주의해야 할 점!! 바깥의 접근 레벨보다 내부의 접근 레벨이 더 높을 수는 없습니다!!

 

접근 수준 접근 수준 명시 keyword
개방 접근 수준 open
공개 접근 수준 public
내부 접근 수준 internal(default)
파일 내부 접근 수준 fileprivate
비공개 접근 수준 private

 

출처: https://dev-jiwon.github.io/swift-grammar-13/

 

 

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
반응형