CH7-2 · DECISION

캡슐화와 접근 제어의 선택 기준을 나란히 비교한다

비교 항목: private은 객체 내부 구현을 닫는다 / protected는 상속 계약까지 넓힌다 / 공개 타입이 내부 타입을 새게 하지 않는다

캡슐화와 접근 제어 판단표
확인 질문판단 근거코드에서 드러낼 것
private은 객체 내부 구현을 닫는다필드를 private으로 두면 외부는 공개 메서드를 통해서만 상태를 바꿉니다.타입과 시작값
protected는 상속 계약까지 넓힌다같은 패키지와 하위 클래스에 보이므로 단순히 public보다 조금 좁은 접근으로 생각하면 안 됩니다.실패 또는 변경 경계
공개 타입이 내부 타입을 새게 하지 않는다public 메서드의 매개변수나 반환 타입에 내부 구현 클래스를 쓰면 사실상 그 타입도 계약이 됩니다.선택한 규칙의 결과

선택 기준 public 메서드의 매개변수나 반환 타입에 내부 구현 클래스를 쓰면 사실상 그 타입도 계약이 됩니다.