JD.OVER
当子类定义了一个方法,而其超类含有一个所定义名称相同但签名不同的方法,并且类和超类的其他方法不含有此相同名称时,发生 JD.OVER。
漏洞与风险
在某些情况下,可以尝试覆盖超类中的一个方法,但参数列表会不匹配,因此不能覆盖超类方法。当超类而不是子类中的方法签名发生改变时,可能会发生这种情况。如果设计者特意设计了此行为,则并非错误。
缓解与预防
如果这是错误,则在子类中修复方法签名。
示例 1
复制
public class JD_OVER_Sample_1 {
class MyClass {
void init(int i) {
}
}
class MyOtherClass extends MyClass {
void init() {
}
}
}
针对第 16 行的方法声明报告 JD.OVER:可能错误覆盖了方法“init()”。或许,原本要覆盖的是类 com.klocwork.jdefects.checkers.ast.samples.JD_OVER_Sample_1$MyClass 中的 init(int)。