접근지정자 (접근제어자)
Closed this issue · 0 comments
Youngminah commented
접근 지정자 종류 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개가 외부모듈에서는 서브클래싱을 못하고,
- 정의된 모듈 안에서만 서브클래싱을 할 수 있다. 재정의(오버라이딩 가능)