접근 지정자는 객체 주변에 호출 가능 경계를 만든다
public, protected, private는 멤버의 중요도가 아니라 “누가 직접 접근해도 되는가”를 나누는 설계 표지다.
외부 코드
객체 사용자, main, 다른 클래스
public만 통과
class Account
public
외부에 약속한 호출 입구
protected
파생 클래스 확장 지점
private
객체 내부 상태와 보조 구현
파생 클래스
상속받아 구현을 확장하는 코드
public + protected 통과
클래스 내부
허용자기 멤버 함수는 모든 영역을 다룬다.
허용확장용 멤버도 내부에서는 일반 멤버다.
허용상태 검증과 변경을 직접 수행한다.
파생 클래스
허용상속된 공개 인터페이스로 사용한다.
허용부모가 열어 둔 확장 지점만 접근한다.
차단부모의 내부 구현은 직접 만지지 않는다.
외부 코드
허용객체가 제공한 공식 API만 호출한다.
차단상속 설계용 통로는 외부에 열지 않는다.
차단상태와 보조 구현을 숨긴다.
읽는 법: 외부에 보여도 되는 약속은 public, 자식 클래스의 확장 지점은 protected, 객체가 스스로 지켜야 할 상태는 private에 둔다.