サブクラスのコンストラクターからスーパークラスで宣言されているフィールドへの代入、または変更を報告します。

スーパークラスのフィールドは自身のコンストラクターで初期化し、サブクラス内でそのコンストラクターに委譲することが望ましいとされています。 これにより、あるフィールドがコンストラクターを実行後に変更されていない場合に final として宣言することも可能になります。

例:


  class Super {
    int x;
  }
  class Sub extends Super {
    Sub(int _x) {
      // 警告: x はスーパークラスで宣言されています
      x = _x;
    }
  }

この問題を回避するため、スーパークラスのコンストラクターを宣言します:


  class Super {
    final int x;

    Super(int _x) {
      x = _x;
    }
  }
  class Sub extends Super {
    Sub(int _x) {
      super(_x);
    }
  }