피드로 돌아가기
Can We Increase Visibility in Overriding? A Simple Guide for Java Developers
Dev.toDev.to
Backend

Liskov Substitution Principle 기반 Java Method Visibility 확장 설계

Can We Increase Visibility in Overriding? A Simple Guide for Java Developers

realNameHidden2026년 4월 14일4beginner

Context

상속 관계에서 부모 클래스의 제한된 접근 제어자를 자식 클래스에서 확장해야 하는 API 설계 요구사항 발생. 부모의 제약 사항을 유지하면서도 하위 클래스의 유연한 인터페이스 노출이 필요한 상황을 분석.

Technical Solution

  • Liskov Substitution Principle 준수를 통한 부모-자식 간 타입 호환성 보장 설계
  • Visibility Ladder(private → default → protected → public) 구조에 따른 접근 권한 확장 허용
  • 하위 클래스에서 접근 제어자를 상향 조정하여 외부 API 노출 범위를 넓히는 전략 채택
  • 부모의 public 메서드를 자식에서 제한적 권한으로 변경 시 발생하는 컴파일 에러를 통한 타입 안정성 확보
  • @Override 어노테이션을 활용한 컴파일 단계의 시그니처 및 접근 권한 검증 프로세스 적용
  • private 메서드의 경우 상속 대상에서 제외되어 오버라이딩이 아닌 신규 메서드 정의로 처리하는 구조 설계

1. 오버라이딩 시 부모 클래스의 접근 제어자보다 좁은 범위의 제어자를 설정하지 않았는지 검토

2. 인터페이스 확장 시 Liskov Substitution Principle을 위배하여 런타임 오류를 유발하는지 확인

3. 메서드 가시성 변경 시 @Override 어노테이션을 통해 컴파일 타임 검증 수행

4. 무분별한 public 확장보다 아키텍처 목적에 맞는 최적의 접근 제어자(protected 등) 선택 고려

원문 읽기