无法覆盖Java中的方法

时间:2018-10-27 23:09:38

标签: java override

我通常不会发布这么简单的内容,但是这个问题使我挠头了一段时间。

我正在尝试覆盖子类中的方法,但收到以下错误消息:

enter image description here

我的BitCompressor.java扩展了Compressor.java并尝试覆盖其encodeInput(...)方法,但是当我编译时,出现以下错误:error: method does not override or implement a method from a supertype

上面的屏幕快照显示了原始方法(中间),试图重写该方法的子类(顶部)和错误(底部)。

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:5)

删除static关键字。您不能覆盖静态方法

要覆盖一个方法,它必须是具有超类可见性的普通实例方法(即,公共,受保护或可能是程序包私有),并且未标记为final。

默认情况下,Java中的每个非静态方法都是虚拟方法,最终和私有方法除外。这些虚拟方法是多态的,可以覆盖。