Example

public static class Base {

public Base( Integer value1, Integer value2 ) {
super();
this .value1 = value1;
this .value3 = getThirdValue();
this .value2 = value2;
}
protected Integer getThirdValue() {
return value1;
}
protected Integer value1;
protected Integer value2;
protected Integer value3;
}

public static class Derived extends Base {
public Derived( Integer value1, Integer value2 ) {
super( value1, value2 );
}
protected Integer getThirdValue() {
// value2 is null
return new Integer( value2.intValue() * 10 );
}
}

public static void main( String[] args ) {
Derived derived = new Derived( new Integer( 1 ), new Integer( 2 ) );
}


Solution
Avoid complex computations in constructors, use constructors only to initialize the fields of an object.

public static class Base {
public Base( Integer value1, Integer value2 ) {
this .value1 = value1;
this .value2 = value2;
}
public void init() {
value3 = getThirdValue();
}
protected Integer getThirdValue() {
return value1;
}
protected Integer value1;
protected Integer value2;
protected Integer value3;
}

public static class Derived extends Base {
public Derived( Integer value1, Integer value2 ) {
super( value1, value2 );
}
protected Integer getThirdValue() {
return new Integer( value2.intValue() * 10 );
}
}

public static void main( String[] args ) {
Derived derived = new Derived( new Integer( 1 ), new Integer( 2 ) );
derived.init();
}