首先我们定义一个接口,如下:
public interface People {
String interfaceName = "People";
}
然后定义一个父类,如下:
public class Parent {
{
System.out.println("Parent code block-1");
}
static
{
System.out.println("Parent static block");
}
{
System.out.println("Parent code block-2");
}
}
最后我们定义子类,如下:
public class Son extends Parent implements People {
{
System.out.println("Son code block-1");
}
static
{
System.out.println("Son static block");
}
{
System.out.println("S code block-2");
}
}
接着,给出我们的测试代码:
public static void main(String[] args) {
new Son();
System.out.println("==================");
new Son();
}
下面是测试结果:
Parent static block
Son static block
Parent code block-1
Parent code block-2
Son code block-1
Son code block-2
==================
Parent code block-1
Parent code block-2
Son code block-1
Son code block-2
总结:
静态区块的代码再类加载后初始化的时候执行;
代码块(未使用static声明)在类实例化的时候执行;