상위 클래스의 액세스할 수 없는 메서드(예: 다른 패키지에 포함된 상위 클래스의 package-private 메서드)와 시그니처가 동일한 메서드를 보고합니다.

이와 같은 메서드 이름은 하위 클래스의 메서드가 실제로는 상위 클래스의 액세스할 수 없는 메서드를 숨긴 것이지만, 재정의처럼 보일 수 있어 혼동될 수 있습니다. 또한 추후 상위 클래스의 메서드 가시성이 변경될 경우 하위 클래스의 의미가 확인 없이 변경되거나 컴파일 오류가 발생할 수 있습니다.

빠른 수정은 메서드 이름을 변경하도록 제안합니다.

예:


  public class Super {
    private void test() {
    }
  }

  public class Sub extends Super {
    void test() { // 'Super.test()'를 public으로 설정하면 컴파일 오류가 발생합니다
                  // 'Super.test()'를 package-private으로 설정하면 'Sub.test()'는 재정의가 됩니다
    }
  }