접근 행렬

public / protected / private 접근 범위

접근 제어자는 멤버를 어디까지 열어 둘지 정하는 캡슐화 기준이다. 공개 표면은 작게, 필요한 확장 지점은 명확하게 남긴다.

제어자
클래스 내부
자식 클래스
인스턴스 외부
public 공개 API
가능

자기 멤버로 자유롭게 사용

가능

상속받아 그대로 호출 가능

가능

객체 사용자에게 노출

protected 상속 내부
가능

부모 클래스 내부에서 사용

가능

하위 클래스 구현에 허용

불가

인스턴스 밖에서는 숨김

private 클래스 내부 구현
가능

선언한 클래스 안에서만 사용

불가

자식 클래스에도 직접 비공개

불가

외부 직접 조작 차단

Open

외부가 의존할 이름만 public

문서화된 사용 방법처럼 안정적으로 유지할 멤버에 붙인다.

Extend

상속 설계가 필요하면 protected

하위 클래스가 재사용할 내부 상태와 훅을 제한적으로 열어 둔다.

Hide

불변식은 private으로 보호

값 검증과 상태 변경 규칙은 public 메서드를 통해 통제한다.