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