Calling an overridable method from a constructor could result in failures or strange behaviors when instantiating a subclass which overrides the method.
* The subclass class constructor starts by contract by calling the parent class constructor.
* The parent class constructor calls the method, which has been overridden in the child class.
* If the behavior of the child class method depends on fields that are initialized in the child class constructor, unexpected behavior (like a `NullPointerException`) can result, because the fields aren't initialized yet.
=== Noncompliant code example
[source,text]
----
public class Parent {
public Parent () {
doSomething(); // Noncompliant
}
public void doSomething () { // not final; can be overridden
...
}
}
public class Child extends Parent {
private String foo;
public Child(String foo) {
super(); // leads to call doSomething() in Parent constructor which triggers a NullPointerException as foo has not yet been initialized