class A{
static{
System.out.print("1");
}
public A(){
System.out.print("2");
}
}
class B extends A{
static{
System.out.print("a");
}
public B(){
System.out.print("b");
}
}
public class Hello{
public static void main(String[] ars){
A ab = new B();//执行到此处,结果: 1a2b(过程:先基类A的static代码段加载打印1,后B类的static代码段加载打印a,然后基类的构造方法打印2,后B类的构造方法打印b。)
ab = new B();//执行到此处,结果: 1a2b2b(静态代码段只加载一次,所以只执行构造方法再打印2b)
}
}