0

スーパークラスに保護されたメソッドがあります。

package com.pts.filter
public class a {
  ...

  protected Filter callFilter(Object aInParam) {
     return Filter.LowPass;
  }
}

クラスaを拡張しています。

package com.pts.filter.image    
public class b extends a {
  ...
  @Override
  protected Filter callFilter(Object aInParam) {
     ...
     return Filter.LowPass;
  }
}

「タイプ b のメソッド callFilter は、スーパータイプ メソッドをオーバーライドまたは実装する必要があります」というコンパイラ エラーが発生します。クラス a を拡張しているので、スーパータイプ メソッドが表示されない理由がわかりません。オーバーライドしようとしているメソッドが保護されているためですか? 私の理解では、保護されたメソッドはサブクラスで表示されます。

4

1 に答える 1

5

なぜそれが機能しないのか、私の唯一の推測は、インポートが間違っていることです。両方のクラスで異なる「フィルター」クラスのインポートを使用している可能性があります。それ以外の場合は、コードで言及した方法で保護されたメソッドをオーバーライドすることは完全に合法です。

于 2013-07-03T16:45:54.130 に答える