- 在创建类的实例时创建实例初始化程序块。
- 在父类构造函数被调用之后(即在
super()构造函数调用之后)调用实例初始化块。 - 实例初始化程序块按它们显示的顺序排列。
class A {
A() {
System.out.println("parent class constructor invoked");
}
}
class B2 extends A {
B2() {
super();
System.out.println("child class constructor invoked");
}
{
System.out.println("instance initializer block is invoked");
}
public static void main(String args[]) {
B2 b = new B2();
}
}
Java
上面代码执行结果如下 -
parent class constructor invoked
instance initializer block is invoked
child class constructor invoked
实例块的另一个示例
class A {
A() {
System.out.println("parent class constructor invoked");
}
}
class B3 extends A {
B3() {
super();
System.out.println("child class constructor invoked");
}
B3(int a) {
super();
System.out.println("child class constructor invoked " + a);
}
{
System.out.println("instance initializer block is invoked");
}
public static void main(String args[]) {
B3 b1 = new B3();
B3 b2 = new B3(10);
}
}
Java
上面代码执行结果如下 -
parent class constructor invoked
instance initializer block is invoked
child class constructor invoked
parent class constructor invoked
instance initializer block is invoked
child class constructor invoked 10
原文链接:https://www.yiibai.com/java/instance-initializer-block.html
691

被折叠的 条评论
为什么被折叠?



