외부 계약
호출자가 의존해도 되는 함수와 타입만 공개합니다.
public, private, protected는 문법 장식이 아니라 객체 상태를 누가 읽고 바꿀 수 있는지 제한하는 설계 도구입니다.
호출자가 의존해도 되는 함수와 타입만 공개합니다.
멤버 변수와 보조 함수는 클래스가 직접 검증할 수 있게 숨깁니다.
파생 클래스가 재사용해야 하지만 외부에는 보이지 않아야 할 지점에 둡니다.
class는 private, struct는 public으로 시작한다는 차이를 먼저 봅니다.
새 멤버를 공개하기 전에 외부 코드가 정말 알아야 하는 정보인지 묻습니다.
테스트가 public API만 사용해 객체 상태를 검증하는지 확인합니다.
접근 지정자의 목표는 숨기기가 아니라 객체가 스스로 일관성을 지킬 수 있는 통로만 남기는 것입니다.