스위프트의 접근제어
객체지향 프로그래밍 패러다임에서 중요한 캡슐화와 은닉화를 구현하는 이유는 외부에서 보거나 접근하면 안되는 코드가 있기 때문이다.
불필요한 접근을 허용하지 않고자 할 때 접근 제어를 이용한다.
접근수준 키워드는 총 다섯가지가 있다.
개방 접근수준(open), 공개 접근수준(public), 내부 접근수준(Internal), 파일외부비공개 접근수준(fileprivate), 비공개 접근수준(private)
개방 접근수준은 클래스에서만 사용한다.
공개 접근수준, public
자신이 구현된 소스 파일은 물론, 그 소스 파일이 속해 있는 모듈, 그 모듈을 가져다 쓰는 모듈 등 모든 곳에서 사용할 수 있다.
공개 접근수준은 주로 프레임워크에서 외부와 연결될 인터페이스를 구현하는데 많이 사용한다.
개방 접근수준, open
공개 접근수준 이상으로 높은 접근수준이며, 클래스와 클래스 멤버에서만 사용할 수 있다.
public과 open 의 차이.
- 개방 접근수준을 제외한 다른 모든 접근수준의 클래스는 그 클래스가 정의된 모듈 안에서만 상속할 수 있다.
- 개방 접근수준을 제외한 다른 모든 접근수준의 클래스 멤버는 해당 멤버가 정의된 모듈 안에서만 재정의할 수 있다.
- 개방 접근수준의 클래스는 그 클래스가 정의된 모듈 밖의 다른 모듈ㄹ에서도 상속할 수 있다.
- 개방 접근수준의 클래스 멤버는 해당 멤버가 정의된 모듈 밖의 다른 모듈에서도 재정의할 수 있다.
클래스를 개방 접근수준으로 명시하는 것은 그 클래스를 다른 모듈에서도 부모클래스로 사용하겠다는 목적으로 클래스를 설계하고 코드를 작성했음을 의미한다.
내부 접근수준, internal
기본적으로 모든 요소에 암묵적으로 지정하는 기본 접근수준.
파일외부비공개 접근수준, fileprivate
파일외부 비공개 접근수준으로 지정된 요소는 그 요소가 구현된 소스파일 내부에서만 사용할수 있다.
비공개 접근수준, private
가장 한정적인 범위로 그 기능을 정의하고 구현한 범위 내에서만 사용 가능하다.
'프로그래밍 > Spring' 카테고리의 다른 글
Spring-boot WebSecurityConfigurerAdapter 설정관련 항목 (0) | 2019.03.27 |
---|---|
spring-boot-starter-security 403 Forbidden 에러 대처 (4) | 2019.03.26 |
18. 인스턴스의 생성과 소멸 (0) | 2019.02.25 |
17. 스위프트의 프로퍼티와 메서드에 대한 이해 (0) | 2019.02.24 |
16. 구조체와 클래스 (0) | 2019.02.23 |