我正在审核认证考试,我尝试了以下代码:
class A {
B b = new B();
static {
System.out.println("A static.");
}
{
System.out.println("A instance.");
}
A() {
System.out.println("A constructor.");
}
}
class B extends A {
static {
System.out.println("B static.");
}
{
System.out.println("B instance.");
}
B() {
System.out.println("B constructor.");
}
}
public class Raaawrrr {
public static void main(String args[]) {
A a = new A();
}
}
打印:
静止。 B静态。
然后导致堆栈溢出。我很难理解为什么。你能帮帮我吗?
答案 0 :(得分:10)
实例化B. B恰好也是A类,因此再次实例化。哪个实例化B ...等等。
答案 1 :(得分:4)
您正在创建类B
的对象,该对象是类A
中A
的子类。请注意,在执行子类构造函数之前,必须 执行超类的构造函数。