【发布时间】:2014-03-20 00:34:22
【问题描述】:
class B {
{
System.out.println("IIB B");
}
B(int i) {
System.out.println("Cons B int");
}
public B() {
this(10);
System.out.println("Cons B");
}
}
public class C extends B {
{
System.out.println("IIB C");
}
public C() {
System.out.println("Cons C");
}
public static void main(String[] args) {
C c1 = new C();
}
}
输出
IIB B
Cons B int
Cons B
IIB C
Cons C
"Java 编译器将初始化程序块复制到每个构造函数中。 因此,这种方法可以用来在之间共享一个代码块 多个构造函数。”
那么为什么 B 类的初始化块没有执行两次,而构造函数执行了两次呢?
【问题讨论】:
-
那么你希望它执行多少次?初始化过程在 Universe 中的任何创建过程中只执行一次。
-
请参阅javaworld.com/article/2076614/core-java/…,了解 Java 中对象初始化的更详细概述。
标签: java