본문 바로가기
모바일앱/iOS

접근제한자 private fileprivate internal public open

by GeekCode 2022. 1. 5.
반응형

접근 제한자 헝용 범위

private : 같은 클래스

fileprivate : 같은 소스 파일(.swift)

internal : 같은 모듈(framework) or 같은 프로젝트

public : 모듈 외부까지 가능

open : 모듈 외부, 상속 및 override가능(확장 가능)

 

선언하지 않을시 디폴트는 internal 접근 제한자

 

 

일반적으로 단일 대상으로 특정 앱을 만드는데, 이 앱의 접근은 앱의 모듈 외부에서 사용하게 만들 필요가 없다.

그렇기 때문에 기본값은 internal이다.

하지만, 외부에서 해당 모듈의 코드를 비공개 하고 싶은 경우 fileprivate이나 private 둘 중 하나로 설정해야한다.

 

 

 

클래스에 붙이는 접근 제한자의 의미는 살짝 다르다.

 

open class -> 다른 모듈에서 해당 클래스를 상속,override가 가능

public class -> 다른 모듈에서 접근만 가능하고 상속, override는 불가능

fileprivate class -> 해당 클래스의 프로퍼티, 함수, 반환 타입 모두 fileprivate

private -> swift4.0부터 private으로 선언해도 extension에서 접근 가능 ( 같은 파일에서만 가능)

반응형