카테고리 없음

Item22 - 데이터 멤버가 선언될 곳은 private 영역임을 명심하자

해달 2018. 2. 5. 21:22

Item22 - 데이터 멤버가 선언될 곳은 private 영역임을 명심하자

챕터 핵심 내용

  • 데이터 멤버는 private 멤버로 선언하자.
  • protected는 public보다 더 많이 '보호'받고 있는 것이 절대로 아니다.

- 데이터 멤버는 private 멤버로 선언하자.

  • 문법적 일관성을 제공한다.
  • 해당 데이터에 관해 접근 불가, 읽기 전용, 읽기 쓰기 접근을 우리가 직접 구현할 수 있다.
  • 캡슐화(encapsulation)
  • 클래스의 불변속성을 항상 유지하는 데 절대로 소홀해질 수 없게 됨.
  • 현재의 구현을 나중에 바꾸기로 결정할 수 있는 권한을 예약함.
  • 구현상의 융통성을 전부 누릴 수 있다.
  • 데이터 멤버를 읽거나 쓸 때 다른 객체에 알림 메세지를 보낸다거나
  • 클래스의 불변속성 및 사전조건, 사후조건을 검증하거나
  • 스레딩 환경에서 동기화를 걸거나

- protected는 public보다 더 많이 '보호'받고 있는 것이 절대로 아니다.

  • protected 멤버나 public 멤버나 오십보 백보이다.
  • 파생 클래스에 대해서 전혀 캡슐화가 이뤄지지 않는다.
  • 이러한 멤버들에 대해 무엇을 바꾸기란 쉽지 않다.
  • 캡슐화 관점에서 쓸모 있는 접근 수준은 private이냐 private이 아니냐 이렇게 둘 뿐이다