티스토리 뷰

언어 소개 - Swift

Swift - 접근지정자

최초의 펭귄 2018. 6. 2. 16:28

안녕하세요. 오늘은 Swift의 접근지정자에 대해 알아보겠습니다.
객체지향의 은닉화를 위해 접근지정자를 사용하는데요.
Swift는 총 5개의 접근지정자를 가지고 있습니다.

모듈과 소스파일

Swift는 모듈과 소스파일을 기반으로 접근지정자가 설계되었습니다.

모듈은 하나의 코드의 묶음입니다.
하나의 프레임워크 하나의 라이브러리 하나의 애플리케이션이 모듈의 단위입니다.

소스파일은 .swift파일 하나의 단위입니다.
Swift는 기존의 언어와 달리 하나의 .swift파일에 여러 타입을 정의할 수 있습니다.

접근지정자

Swift의 접근지정자는 총 5개로
open, public, internal, fileprivate, private로 이루어져 있습니다.

public, open

public은 어디서든 사용될 수 있도록 접근수준을 지정합니다.
모듈 내 소스파일은 물론 모듈을 가져다가 쓰는 외부 모듈에서도 쓰일 수 있습니다.

open은 public보다 더욱 개방적은 접근수준을 지정합니다.
open은 클래스와 클래스의 맴버에만 사용될 수 있으며

차이점은 다음과 같습니다.

  • open은 모듈 밖에서도 클래스를 상속될 수 있도록 만듭니다.
  • open은 클래스의 맴버를 모듈 밖에서도 재정의 할 수 있도록 만듭니다.

open과 public의 차이는 한마디로 모듈 밖에서도 재정의와 상속의 유무에 있습니다.

internal

internal은 기본적으로 모든 요소에 암묵적으로 지정되는 접근수준입니다.
만약 아무런 접근지정자가 선언되지 않았다면 internal 접근수준을 가지게 됩니다.
internal은 같은 모듈 내에서 상속, 재정의, 사용까지 가능합니다.

하지만 모듈 외부에서는 접근이 불가능하기에 모듈 내부에서 광역적으로 사용될 곳에 선언합니다.

fileprivate, private

fileprivate는 같은 소스코드안에서 상속, 재정의, 사용이 가능하도록 만드는 접근지정자입니다.
.swift파일안에 여러 타입을 선언할 수 있는 Swift언어의 특성을 고려한 접근지정자이며
해당 소스파일에서만 사용하는 경우에 사용합니다.

private는 같은 타입안에서만 사용 가능하며 그 외의 어떠한 상황에서도 접근이 불가능합니다.
같은 타입 안에서 상태나 정보를 은닉화시킬때 사용합니다.

참고사항

모든 타입에 적용되는 접근지정자 규칙은 "상위 요소보다 하위 요서가 더 높은 접근수준을 가질 수 없다." 입니다.

예를 들어 private로 선언된 클래스에서 public 프로퍼티나 함수를 가질 수 없습니다.
또한 매개변수나 반환값이 함수의 접근지정자보다 같거나 높아야 합니다.
(튜플을 선언한 접근지정자보다 내부 요소의 접근지정자가 같거나 높아야 합니다.)

열거형의 원시 값의 타입이 열거형 자체의 접근수준보다 높아야 합니다.

마치며

객체 지향 프로그래밍을 하다 보면 접근지정자를 다루는 경우가 많습니다.
Swift의 5개의 접근지정자를 공부하면서 쉬운 기준으로 명확하게 나누었다는 생각을 하게 되었습니다.
참고사항의 요소를 기억하면서 더욱 좋은 Swift 코드를 작성하시기 바랍니다.
질문은 하단의 댓글로 남겨주세요.

감사합니다.

'언어 소개 - Swift' 카테고리의 다른 글

Swift - 서브스크립트  (0) 2018.06.03
Swift - 클로저  (0) 2018.06.02
Swift - 프로퍼티  (0) 2018.06.01
Swift - 클래스와 구조체  (0) 2018.05.31
Swift - 옵셔널  (0) 2018.05.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday