学习过程中,使用eclipse时发现了一个疑似bug:
书写一个接口Animal,有静态方法a
错误的提示信息位置
接口bird继承接口Animal,定义非静态方法a声明
提示信息为:Bird中a覆盖了Animal中a。
提示信息是错误的,并且具有误导性。
同学使用的英文版中,“覆盖”一词替换为了Override。
解析
我们先删除Bird中a的声明,
在另一个实现类 Duck中引用B.a(),发现B中根本没有静态方法a
这是因为extends关键字不对接口的静态方法生效。
既然本来没有静态方法a,又怎么重写呢?
恢复Bird中的声明,添加@Override关键字,无法通过静态类型检查,说明这不是Override。
Eclipse版本:
2021-03(4.19.0)