题目:输出打印的执行顺序
/**
* 父类
*/
public class SupPrint {
static {
System.out.println("Sup Print ...A");
}
{
System.out.println("Sup Print ...B");
}
public SupPrint() {
System.out.println("Sup Print ...C");
}
{
System.out.println("Sup Print ...D");
}
}
/**
* 子类
*/
public class SubPrint extends SupPrint{
static {
System.out.println("SubPrint a");
}
{
System.out.println("SubPrint b");
}
public SubPrint() {
System.out.println("SubPrint c");
}
{
System.out.println("SubPrint d");
}
}
// 执行
public class PrintTest {
public static void main(String[] args) {
new SubPrint();
}
}
结果为:
/**
* 打印输出:
* Sup Print ...A 父类static代码块执行
* SubPrint a 子类static代码块执行
* Sup Print ...B 父类非static代码块执行
* Sup Print ...D 父类非static代码块执行
* Sup Print ...C 父类构造方法执行
* SubPrint b 子类非static代码块执行
* SubPrint d 子类非static代码块执行
* SubPrint c 子类构造方法执行
*/