Variáveis e membros não inicializados em Java

Considere isto:

public class TestClass {

    private String a;
    private String b;

    public TestClass()
    {
    a = "initialized";
    }

    public void doSomething()
    {
    String c;

        a.notify(); // This is fine
    b.notify(); // This is fine - but will end in an exception
    c.notify(); // "Local variable c may not have been initialised"
    }

}

Eu não entendo. "b" nunca é inicializado, mas gera o mesmo erro em tempo de execução que "c", que é um erro em tempo de compilação. Por que a diferença entre variáveis locais e membros?

Editar: tornar os membros privados foi minha intenção inicial, e a pergunta ainda permanece ...

questionAnswers(7)

yourAnswerToTheQuestion