[Swift] 접근 제어 (Access Control)란 무엇을까?

Fezravien·2021년 10월 1일
0

Swift

목록 보기
1/1
post-thumbnail

접근 제어 (Access Control)

접근 제어는 외부 코드에 대한 접근성가시성(visibility)을 제한한다.
접근 제어는 상세 구현을 숨기고 외부 코드가 접근했으면 하는 인터페이스만 노출시킨다.

스위프트에는 다섯 가지의 접근 단계가 존재한다.

Open

open은 모듈을 임포트하고자 하는 어느 곳에서든 프로퍼티나 메소드, 클래스 등을 사용할 수 있게 해준다.
기본적으로 접근 제어 단계를 open으로 하는 아이템은 누구나 사용할 수 있다.

open으로 표시된 아이템은 해당 아이템이 정의된 모듈 내에 있는 모든 아이템에서 서브클래싱이나 오버라이딩을 할 수 있으며,
해당 아이템이 정의된 모듈을 임포트한 모듈에서도 이를 서브클래싱하거나 오버라이딩할 수 있다.

open은 주로 프레임워크에서 프레임워크의 공개 API를 노출시키기 위해 사용한다.


Pubilc

public 접근 단계는 모듈을 임포트하고자 하는 어느 곳에서나 프로퍼티나 메소드, 클래스 등을 사용할 수 있게 해준다.
기본적으로 접근 제어 단계를 public으로 하는 아이템은 누구나 사용할 수 있다

public으로 표기된 아이템은 해당 아이템이 정의된 모듈 내에 있는 모든 아이템에서 서브클래싱하거나 오버라이딩할 수 있다.
해당 아이템이 정의된 모듈을 임포트한 모듈에서도 이를 서브클래싱하거나 오버라이딩할 수 있다. (open과 차이점)

publicopen과 다르게 다른 프로젝트의 모듈에서는 사용할 수 없다.
동일한 프로젝트 내의 모듈에서 사용이 가능하다.

public은 주로 프레임워크에서 프레임워크의 공개 API를 노출하기 위해 사용한다.


internal

internal은 기본이 되는 접근 단계로 접근 제어를 명시하지 않는다면 internal이 된다.

internal 접근 단계는 아이템이 정의된 모듈 내부에서 프로퍼티와 메소드 클래스 등을 사용할 수 있게 해준다.
프레임워크에서 이러한 접근 단계를 사용할 경우 프레임워크의 다른 부분에서는 아이템을 사용할 수 있지만,
프레임워크 외부 코드에서는 아이템에 접근할 수 없다.


Fileprivate

fileprivate 접근 제어는 아이템이 정의돼 있는 소스 파일과 동일한 코드 내부에서 프로퍼티와 메소드의 접근을 허용한다.


Private

private는 가장 엄격한 접근 제어 단계다.

private는 이를 정의한 소스 파일 내부에서만 프로퍼티와 메소드, 클래스 등을 사용하는 것을 허용한다.

fileprivate와 달리 같은 파일 안에 있어도 서로 다른 객체가 private으로 선언되어 있다면 둘은 서로 접근할 수 없다.


이미지 출처

profile
꺼진 뷰도 다시보자.

0개의 댓글