접근 제어 경계

접근 제어 경계

외부 호출부가 써도 되는 계약, 클래스 내부의 불변식, 자식 클래스의 확장 지점을 분리하면 public, private, protected 선택이 명확해집니다.

public

외부 API로 남길 멤버

클래스 내부 허용 자식 클래스 허용 인스턴스 외부 허용

호출부가 의존해도 되는 이름과 반환 타입만 공개합니다.

private

불변식을 지키는 내부 상태

클래스 내부 허용 자식 클래스 차단 인스턴스 외부 차단

검증 로직을 우회하면 안 되는 값은 메서드를 통해서만 바꿉니다.

protected

상속 확장용 내부 계약

클래스 내부 허용 자식 클래스 허용 인스턴스 외부 차단

하위 클래스가 재사용할 훅은 노출하되 외부 호출은 막습니다.

외부에서 값이 자주 깨진다면

속성을 private으로 숨기고, 검증을 통과한 변경만 public 메서드로 열어 잘못된 상태 유입을 막습니다.

상속 클래스가 중복 구현한다면

공통 로직은 protected 메서드로 올리고, 외부에 필요한 결과만 공개합니다.