Reports assignment to, or modification of fields that are declared in a superclass from within a subclass 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);
    }
  }