NullPointerException: Substituindo o método de chamada de construtor da classe Base na classe Derived

Eu tenho este trecho de código:

class Base {
    public Base() {
        method();
    }

    void method() {
        System.out.println("In Base");
    }
}

class Derived extends Base {
    private String bar;

    public Derived() {
        bar="bar";
    }

    public void method() {
        System.out.println(bar.length());
    }

    public static void main(String[] args) {
        Base base=new Derived();
        base.method();
    }
}

Ao executar o código, recebi uma exceção:

Exception in thread "main" java.lang.NullPointerException
    at Derived.method(Main.java:22)
    at Base.<init>(Main.java:5)
    at Derived.<init>(Main.java:17)
    at Derived.main(Main.java:27)

Eu não consigo entender por que háNullPointerException e astackTrace da exceção. Alguém poderia me ajudar a entender?

Você pode verificar o códigoAqui.

questionAnswers(2)

yourAnswerToTheQuestion