У меня есть абстрактный класс и производный класс. Посмотрите на предоставленный код: -
public abstract class Parent{
public Parent(){
init();
}
public abstract void init();
}
public class Child extends Parent{
private String mTitle = null;
public Child(){
super();
System.out.println(mTitle.toString());
}
public void init(){
mTitle = "It' a test";
}
}
Когда я исполню вышеуказанный код, он выкинет NullPointerException при печати значения mTitle. Если вы проверите код в конструкторе родителя, я вызвал абстрактный метод, который будет вызван методом init производного класса, В абстрактном методе я инициализирую значение значения mTitle как = "Это тест";
После вызова родительского конструктора производного класса необходимо вызвать System.out.println.
Если это так, то почему он бросает исключение NullPointerException.
Но, если я просто оставлю задание mTitle, он не будет выбрасывать исключение, например: -
private String mTitle;
Если инициализация переменной возникает при вызове contruct класса, и мы знаем, что по умолчанию глобальный объект инициализируется в null. Но в этом случае он не будет выбрасывать исключение.