접근제어자

유재우·2023년 5월 3일
0

iOS Developer의 길!

목록 보기
13/15

접근제어자

- 코드끼리 상호작용을 할 때 파일 간 또는 모듈 간에 접근을 제한할 수 있는 기능
- 불필요한 접근으로 의도치 않은 결과가 나오거나 필요한 부분이 아닌 
  전체 코드가 노출될 가능성이 있을 때 접근제어를 이용

접근 레벨의 종류

Open - 개방

가장 넓은 범위로 지정된 요소는 어디서든 사용 가능
  • 클래스에만 사용 가능
  • 클래스가 정의된 모듈 외부에서도 상속 가능
  • 클래스가 정의된 모듈 외부에서 override 가능

    클래스를 open으로 명시하는 것은 다른 모듈에서도 슈퍼 클래스로 사용하겠다는 목적으로 클래스를 설계했음을 의미

Public - 공개

주로 프레임 워크에서 외부와 연결될 인터페이스를 구현할 때 많이 쓰임

Open과의 차이점

  • Open은 class와 class 멤버에만 적용 가능(struct와 enum은 public 부터 가능)
  • Open은 모듈 외부 코드에서도 상속과 override가 허용됨

Internal - 내부

기본적으로 모든 요소에 암묵적으로 지정하는 기본 접근 수준
  • 소스파일이 속해있는 모듈 어디에서든 쓰일 수 있음
  • 보통 외부에서 사용할 클래스나 구조체가 아니며, 모듈 내부에서 광역적으로 사용할 경우 internal로 지정
  • 기본 접근 수준으로 굳이 표기하지 않아도 됨

Fileprivate - 파일 외부 비공개

요소가 구현된 소스파일 내부에서만 사용 가능
  • 해당 소스파일 외부에서 값이 변경되거나 함수를 호출하면 부작용이 생길 수 있는 경우에 사용

Private - 비공개

해당 요소를 정의한 범위 내에서만 사용가능
  • 클래스 내부에 선언된 private 요소는 같은 파일이더라도 사용 불가

참고한 블로그 링크

profile
끝없이 탐구하는 iOS 개발자 유재우입니다!

0개의 댓글