【问题标题】:Overriding a protected method覆盖受保护的方法
【发布时间】:2013-07-01 11:21:42
【问题描述】:

我在超类中有一个受保护的方法。

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 类,所以我不明白为什么它看不到超类型方法。是因为我试图覆盖的方法受到保护吗?据我了解,受保护的方法在子类中是可见的。

【问题讨论】:

  • 您确定要显示所有内容吗?这应该可以编译...除非您覆盖 another 名为 a 的类,它没有此方法
  • 您似乎忘记了一些import 语句。这两个类都在不同的包中。
  • 正如其他 cmets/answers 中所暗示的那样,您覆盖的 a 与您认为的不同。查看您的所有课程a,和/或尝试覆盖其他一些方法,看看会发生什么。

标签: java inheritance protected overriding


【解决方案1】:

我唯一的猜测为什么它可能不起作用,是错误的导入。您可能在两个类中使用不同的“过滤器”类导入。否则,按照您在代码中提到的方式覆盖受保护的方法是完全合法的。

【讨论】:

  • 使用了不同类型的过滤器类(不知道 java 有一些内置的过滤器类用于摆动 UI 的东西)。当您过于信任建议工具时,就会发生这种情况。
猜你喜欢
  • 2011-08-04
  • 2015-10-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-08
  • 2012-01-26
  • 2016-12-26
  • 1970-01-01
  • 2012-01-31
相关资源
最近更新 更多