アクセス不可能なスーパークラスのメソッドと同じシグネチャーを持つメソッドを報告します。たとえば、private メソッド、または別のパッケージにあるスーパークラスの package-private メソッドが挙げられます。

このようなメソッドは混乱を招く可能性があります。サブクラスのメソッドがアクセス不可能なスーパークラスのメソッドを不可視にしている場合、オーバーライドのように見える可能性があるためです。 また、スーパークラスのメソッドの可視性が後から変更されると、サブクラスのセマンティクスがひそかに変わったり、コンパイルエラーが発生したりする場合があります。

メソッドの名前を変更するクイックフィックスが提案されます。

例:


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

  public class Sub extends Super {
    void test() { // 'Super.test()' を public にするとコンパイルエラーが発生します
                  // 'Super.test()' を package private にすると 'Sub.test()' がオーバーライドになります
    }
  }