package test;
class Super {
?? ?static int x;
?? ?static {
?? ??? ?System.out.println("Initialization Super");
?? ?}
}
class Sub extends Super {
?? ?static final int y = 2005;
?? ?static int z;
?? ?static {
?? ??? ?System.out.println("Initialization Sub");
?? ?}
}
public class Initialization {
?? ?public static void main(String[] args) {
?? ??? ?System.out.println(Sub.x);
?? ??? ?// 不會引起Sub類的初始化,因為x是定義在Super類中的
?? ??? ?System.out.println("-------------------------");
?? ??? ?System.out.println(Sub.y);
?? ??? ?// 不會引起Sub類的初始化,因為y是常量
?? ??? ?System.out.println("-------------------------");
?? ??? ?System.out.println(Sub.z = 2004);
?? ??? ?// 將會引起Sub的初始化
?? ?}
}
//結果:
//*****************************
//Initialization Super
//0
//-------------------------
//2005
//-------------------------
//Initialization Sub
//2004