Youngminah/TIL

접근지정자 (접근제어자)

Closed this issue · 0 comments

접근 지정자 종류 5가지

● open , public

  • 접근을 통해 엔티티를 정의 모듈의 모든 소스 파일 내에서 사용할 수 있음
  • 정의한 모듈을 가져오는 다른 모듈의 소스파일에서도 사용
  • 일반적으로 Framework에 공용 인터페이스를 지정할 때는 open 또는 public 접근을 사용
  • open 또는 public 접근의 차이점은 아래에 설명

● Internal

  • 엔티티가 정의 모듈의 모든 소스 파일 내에서 사용되지만, 해당 모듈 외부의 소스파일에서는 사용되지 않도록 해야함
  • 일반적으로 App이나 Framework의 내부 구조를 정의할 때 internal 접근을 사용
  • 아무것도 안쓰면 internal임
  • 최적화: 기본적으로 internal에서는 재정의가 되지 않는다면 static dispatch에서 실행되게 자동으로 변환해준다.

● File-private

  • 자체 정의 소스 파일에 대한 엔티티 사용을 제한
  • File-private접근을 사용하면 해당 세부 정보가 전체 파일 내에서 사용 될 때 특정 기능의 구현 세부 정보를 숨길 수 있음.

● private

  • 엔티티의 사용을 enclosing 선언과 동일한 파일에 있는 해당 선언의 extension으로 제한.
  • private접근을 사용하면 단일 정의 내에서만 사용되는 특정 기능 조각의 구현 상세 내역을 숨길 수 있음.

참고

  • open 접근수준은 Class에만 붙힐 수 있습니다. Struct와 Enum은 public부터 가능
  • open을 제외한 public, internal, File-private, private 총 4개가 외부모듈에서는 서브클래싱을 못하고,
  • 정의된 모듈 안에서만 서브클래싱을 할 수 있다. 재정의(오버라이딩 가능)