Item22 - 데이터 멤버가 선언될 곳은 private 영역임을 명심하자
챕터 핵심 내용
- 데이터 멤버는 private 멤버로 선언하자.
- protected는 public보다 더 많이 '보호'받고 있는 것이 절대로 아니다.
- 데이터 멤버는 private 멤버로 선언하자.
- 문법적 일관성을 제공한다.
- 해당 데이터에 관해 접근 불가, 읽기 전용, 읽기 쓰기 접근을 우리가 직접 구현할 수 있다.
- 캡슐화(encapsulation)
- 클래스의 불변속성을 항상 유지하는 데 절대로 소홀해질 수 없게 됨.
- 현재의 구현을 나중에 바꾸기로 결정할 수 있는 권한을 예약함.
- 구현상의 융통성을 전부 누릴 수 있다.
- 데이터 멤버를 읽거나 쓸 때 다른 객체에 알림 메세지를 보낸다거나
- 클래스의 불변속성 및 사전조건, 사후조건을 검증하거나
- 스레딩 환경에서 동기화를 걸거나
- protected는 public보다 더 많이 '보호'받고 있는 것이 절대로 아니다.
- protected 멤버나 public 멤버나 오십보 백보이다.
- 파생 클래스에 대해서 전혀 캡슐화가 이뤄지지 않는다.
- 이러한 멤버들에 대해 무엇을 바꾸기란 쉽지 않다.
- 캡슐화 관점에서 쓸모 있는 접근 수준은 private이냐 private이 아니냐 이렇게 둘 뿐이다