불필요한 접근으로 의도치 않은 결과를 초래하거나 꼭 필요한 이상의 코드가 노출될 위험이 있을 때 사용
은닉화란
클래스의 프로퍼티를 private으로 만들어 클래스 밖에서 함부로 접근할 수 없도록 하는 것을 말함
클래스를 사용할 때 프로퍼티에 직접 접근하는 것은 데이터 무결성 오류에 치명적일 수 있기에 대신 연산프로퍼티(get, set)를 통한 접근을 가능케 하는 것을 말함
종류
private: 접근 제어자 중 가장 한정적인 범위를 가지며 기능을 정의하고 구현한 범위 내에서만 사용이 가능합니다. private으로 지정한 기능은 같은 소스파일 안에 구현한 다른 타입이나 기능에서도 사용이 불가능합니다.
Fileprivate: 해당 소스파일 내부에서만 사용이 가능합니다.
internal: default로 internal이 지정되며, 해당 소스파일이 속해있는 모듈 어디에서든 쓰일 수 있습니다.
Public: public으로 지정된 요소는 어디서든 쓰일 수 있습니다. 주로 프레임워크에서 외부와 연결된 인터페이스를 구현하는데 많이 쓰입니다. 하지만 다른 모듈에서 오버라이드와 상속이 불가능합니다.
Open :정의된 모듈 밖의 다른 모듈에서도 상속하거나 재정의할 수 있습니다. 때문에 클래스에서만 사용 가능합니다.