gpt4 book ai didi

java - 为什么此代码会抛出 NullPointerException?

转载 作者:行者123 更新时间:2023-11-29 03:07:34 26 4
gpt4 key购买 nike

我是 Java 新手。我在一本书中找到了这个例子。我希望它打印“ab”或“abc”,但它却抛出异常。有人可以解释为什么会这样吗?提前致谢。

public class Test { 
class A {
String str = "ab";

A() {
printLength();
}

void printLength() {
System.out.println(str.length());
}
}

class B extends A {
String str = "abc";

void printLength() {
System.out.println(str.length());
}
}

public static void main(String[] args) {
new Test().new B();
}
}

这里是异常(exception)

Exception in thread "main" java.lang.NullPointerException
at c.Test$B.printLength(Test.java:25)
at c.Test$A.<init>(Test.java:13)
at c.Test$B.<init>(Test.java:21)
at c.Test.main(Test.java:30)

最佳答案

AB 之前构造。在 A 构造函数中调用 printLength,它在类 B 中被覆盖。但是 B 类中的 str 还没有被实例化,并且会是 null

因此你得到一个空指针异常。

关于java - 为什么此代码会抛出 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31316296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com