이번 노트는 swift의 접근제어자인 public, private, private(set), fileprivate의 차이에 대해서 알아보려한다.
public은 우리가 사용하는 가장 일반적인 접근제어자이다.class나 struct(구조체) 밖에서도 값에 접근 및 수정이 가능하다.
예제를 보면 School 구조체에 public으로 선언된 grade 변수는 구조체 외부에서 접근 및 수정이 가능하다.private은 클래스 또는 구조체 블럭 내에서만 접근 및 수정이 가능하다.
예제를 보면 School 클래스 내부의 classRoom 함수에서는 접근이 가능하나, 클래스 외부에서는 접근, 수정이 불가능하다.private(set)은 private개념에서 클래스나 구조체 외부에서 값의 접근을 허용한다. 단, 값의 접근만 허용될 뿐 수정을 불가하다.
예제를 보면 School 클래스 블럭 내의 동작은 private과 동일하나 School 클래스 외부에서 값의 접근, 즉 print() 는 가능하나 값을 수정하는 것은 불가능하다.fileprivate는 같은 파일 내에서만 접근및 수정이 가능한 접근제어자이다. 다른 파일에서 접근은 불가능하다.