Instance fields don't initialize if overridden base method is called during class initialization
<p>There's a base class <code>ServerAdapter</code>:</p>

<pre><code>public abstract class ServerAdapter {
    public ServerAdapter() {
        initGUI();
    }

    protected abstract void initGUI();
}
</code></pre>

<p>And a child class that inherits <code>ServerAdapter</code>:</p>

<pre><code>public abstract class LinuxServerAdapter extends ServerAdapter {
    protected CheckBox key = new CheckBox();

    public LinuxServerAdapter() {
        super();
    }

    @Override
    public void initGUI() {
        //NPE is thrown here, because key = null
        key.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                //Something happens here
            }
        });
    }
}
</code></pre>

<p>End class that inherits LinuxServerAdapter:</p>

<pre><code>public class MyLinuxServerAdapter extends LinuxServerAdapter {

    public MyLinuxServerAdapter() {
        super();
    }

    public static void main(String args[]) {
        ServerAdapter server = new MyLinuxServerAdapter();
    }
}
</code></pre>

<p>NPE is thrown when I try to add clickHandler on a key.</p>

<p>Why <code>key</code> isn't initialized? Is this a case where initialization order works in a specific way?</p>
