Я получаю NullPointerException
под кодом ниже.Java NullPointerException при расширении родительского класса
Parent.java
public abstract class Parent {
public Parent(){
parentFunc();
}
public abstract void parentFunc();
}
Child.java
public class Child extends Parent {
ArrayList<String> list = new ArrayList<String>();
@Override
public void parentFunc() {
list.add("First Item");
}
}
когда я создаю и экземпляр Child
как new Child()
я получаю NullPointerException
Вот мой вывод консоли
Exception in thread "main" java.lang.NullPointerException
at Child.parentFunc(Child.java:8)
at Parent.<init>(Parent.java:5)
at Child.<init>(Child.java:3)
at Main.main(Main.java:8)
Я знаю, что исключение occu rs из-за Child.parentFunc(), который вызвал в родительском конструкторе, но я действительно запутался. Так что интересно, что происходит
Каков порядок создания;
- Когда список переменных создаются
- Когда конструкторы называют
- Когда функции создаются и называются, которые называются в конструкторах
Родители строятся сначала, а затем дети. Список не был создан, когда функция была вызвана, следовательно, NPE. – duffymo