Неинициализированные переменные и члены в Java

Учти это:

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"
    }

}

Я не понимаю «b» никогда не инициализируется, но выдаст ту же ошибку времени выполнения, что и «c», что является ошибкой времени компиляции. Почему разница между локальными переменными и членами?

редактироватьПервоначально я собирался сделать членов закрытыми, и вопрос до сих пор стоит ...

Ответы на вопрос(7)

Ваш ответ на вопрос