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)
}
}