EN JP CN

JD.OVER

JD.OVER

JD.OVER は、サブクラスにメソッドが定義され、そのスーパークラスに同じ名前のメソッドが異なるシグネチャで定義されており、クラスとスーパークラスの両方には同じ名前のメソッドが定義されていない場合に発生します。

脆弱性とリスク

スーパークラスのメソッドをオーバーライドしようとしても、パラメーターリストが一致しないため、スーパークラスのメソッドをオーバーライドすることはできません。このような状態は、スーパークラスのメソッドシグネチャを変更し、サブクラスでは変更していない場合に発生する可能性があります。この挙動が設計者が意図したものである場合には、エラーではありません。

軽減と防止

これがエラーである場合には、サブクラスのメソッドシグネチャを修正してください。

例 1

8  public class JD_OVER_Sample_1 {
9      class MyClass {
10         void init(int i) {
11 
12         }
13     }
14 
15     class MyOtherClass extends MyClass {
16         void init() {
17 
18         }
19     }
20 }

JD.OVER が 16 行目のメソッド宣言に対して報告されています。'init()' メソッドが誤ってオーバーライドされている可能性があります。おそらく、'com.klocwork.jdefects.checkers.ast.samples.JD_OVER_Sample_1$MyClass' クラスの 'init(int)' がオーバーライドの対象です。