접근 제어자 설계 기준

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

접근 제어자외부 호출부가 써도 되는 계약, 클래스 내부의 불변식, 자식 클래스의 확장 지점을 분리하면 public , private ,…
public

외부 API로 남길 멤버

클래스 내부 허용 · 자식 클래스 허용 · 인스턴스 외부 허용 · 호출부가 의존해도 되는 이름과 반환 타입만 공개합니다.

private

불변식을 지키는 내부 상태

클래스 내부 허용 · 자식 클래스 차단 · 인스턴스 외부 차단 · 검증 로직을 우회하면 안 되는 값은 메서드를 통해서만 바꿉니다.

protected

상속 확장용 내부 계약

클래스 내부 허용 · 자식 클래스 허용 · 인스턴스 외부 차단 · 하위 클래스가 재사용할 훅은 노출하되 외부 호출은 막습니다.

4

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

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

5

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

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

핵심public/private 노출 경계 멤버를 공개할수록 호출부와 강하게 결합됩니다. 필요한 접근 범위보다 한 단계 넓히지 않는 습관이 핵심입니다.