Reports an assignment to a field that is declared in a superclass from within a constructor.

It is considered preferable to initialize the fields of a superclass in its own constructor and delegate to that constructor in a subclass. This will also allow declaring a field final if it isn't changed after the construction.

Example:


class Super {
  int x;
}
class Sub extends Super {
  Sub(int _x) {
    // Warning: x is declared in a superclass
    x = _x;
  }
}

To avoid the problem, declare a superclass constructor:


class Super {
  final int x;

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