我得到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)
我知道发生异常是因为在父构造函数中调用了Child.parentFunc(),但我确实感到困惑。所以我想知道发生了什么
创建的顺序是什么?
创建列表变量时?
一旦Child
类的构造函数运行,它将被创建。
什么时候调用构造函数?
当您尝试使用new Child()
构造对象时,会调用构造函数,Child
并且会在内部调用super()
,从而调用超类构造函数Parent()
。请注意,构造函数中的第一个语句Child()
是super()
。
系统将为您生成无参数的构造函数,如下所示:
public child()
{
super();// calls Parent() constructor.
//your constructor code after Parent constructor runs
}
创建和调用函数时调用构造函数
弄清楚你想问什么。
Order Of Execution:
父构造器->子构造器->列表
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句