Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
Youngminah opened this issue Dec 23, 2021 · 0 comments
Closed

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

Youngminah opened this issue Dec 23, 2021 · 0 comments
Labels

Comments

@Youngminah
Copy link
Owner

Youngminah commented Dec 23, 2021

접근 지정자 종류 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개가 외부모듈에서는 서브클래싱을 못하고,
  • 정의된 모듈 안에서만 서브클래싱을 할 수 있다. 재정의(오버라이딩 가능)
@Youngminah Youngminah changed the title 접근지정자 접근지정자 (접근제어자) Jan 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant