JD.OVER

JD.OVER occurs when a subclass has a method defined and its superclass has a method with the same name defined but with a different signature, and both the class and the superclass do not have other methods with the same name.

Vulnerability and risk

In some cases it might be an attempt to override a method in a superclass, but the parameter lists do not match, so the superclass method is not overridden. It could have happened when the method signature changed in the superclass but not in the subclasses. It is not an error if the designer intended the behavior.

Mitigation and prevention

If it is an error, fix the method signature in the subclass(es).

Example 1

Copy
  public class JD_OVER_Sample_1 {
      class MyClass {
         void init(int i) {
 
         }
     }
 
     class MyOtherClass extends MyClass {
         void init() {
 
         }
     }
 }

JD.OVER is reported for method declaration on line 16: Possible incorrect override for method 'init()'. Maybe 'init(int)' from class 'com.klocwork.jdefects.checkers.ast.samples.JD_OVER_Sample_1$MyClass' is what was intended to be overridden.