[Swift] 접근제어

김태형·2023년 3월 22일
0

Swift

목록 보기
13/22

이번 글은 접근제어에 대해 작성해보고자 한다.


접근 제어

  • 코드끼리 상호작용을 할 때 파일 또는 모듈 간에 접근을 제한할 수 있는 기능
  • 객체지향 프로그래밍 패러다임에서 중요한 '캡슐화'와 '은닉화'와 연관이 있음
  • 불필요한 접근으로 의도치 않은 결과 초래 가능성이 존재하는데, 이를 방지해줌

모듈

  • 배포할 코드의 묶음 단위
  • import를 통해 불러옴

소스파일

  • 하나의 스위프트 소스 코드 파일

접근 수준

접근 수준키워드접근도범위비고
개방 접근수준open높음모듈 외부까지클래스에서만 사용
공개 접근수준public모듈 외부까지
내부 접근수준internal모듈 내부
파일 외부 비공개 접근 수준fileprivate파일 내부
비공개 접근수준private낮음기능 정의 내부

public (공개 접근 수준)

  • 어디서든 쓰일 수 있음
  • 프레임워크를 만들 때(API 등) 지정

open (개방 접근수준)

  • 클래스와 클래스의 멤버에서만 사용 가능
  • 클래스를 개방 접근 수준(open)으로 명시하는 것은 그 클래스를 다른 모듈에서도 부모클래스로 사용하겠다는 목적으로 클래스를 설계하고 코드를 작성했음을 의미함!!
open class NSString: NSObject, NSCopying, NSMutableCopying, NSSecureCoding {
	open var length: Int { get }
	open func character(at index: Int) -> unichar
	public init()
	public init?(coder aDecoder: NSCoder)
}

internal (내부 접근수준)

  • 기본적으로 모든 요소에 암묵적으로 지정하는 기본 접근수준 (생략 시 default)
  • 외부 모듈에서는 접근 불가능
  • 모듈 내부에서 광역적으로 사용할 경우 사용

fileprivate (파일 외부 비공개 접근수준)

  • 그 요소가 구현된 소스파일 내부에서만 사용가능
  • 소스파일 외부에서 값이 변경되거나 함수를 호출하면 부작용이 생길 수 있는 경우에 사용

private (비공개 접근수준)

  • 기능을 정의하고 구현한 범위 내에서만 사용 가능

‘상위 요소보다 하위 요소가 더 높은 접근 수준을 가질 수 없다’

ex. 상위 class가 private이면 그 안에 정의되어 있는 public class 또한 private으로 취급됨



[출처] 스위프트 프로그래밍 (야곰), 야곰의 스위프트 기초문법 강좌, 개발하는 정대리 스위프트 강좌

0개의 댓글