Moh*_*sal 2 java nullpointerexception
我有这段代码:
class Base {
public Base() {
method();
}
void method() {
System.out.println("In Base");
}
}
class Derived extends Base {
private String bar;
public Derived() {
bar="bar";
}
public void method() {
System.out.println(bar.length());
}
public static void main(String[] args) {
Base base=new Derived();
base.method();
}
}
Run Code Online (Sandbox Code Playgroud)
在执行代码时,我得到了一个异常:
Exception in thread "main" java.lang.NullPointerException
at Derived.method(Main.java:22)
at Base.<init>(Main.java:5)
at Derived.<init>(Main.java:17)
at Derived.main(Main.java:27)
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么会有NullPointerException和stackTrace异常的.有人可以帮我理解吗?
你可以在这里查看代码.
new Derived()创建一个Derived对象,这意味着首先调用它的超类构造函数,然后调用它method- 但是你已经覆盖了method它,因此它是被调用的那个方法的子版本.在该方法中,您调用bar.length尚未初始化的方法.
结论:在构造函数中调用可覆盖的方法几乎绝不是一个好主意.
| 归档时间: |
|
| 查看次数: |
1500 次 |
| 最近记录: |