package scjp.liguoliang.com; /** * I'm try to see the static block run rules, * B extends A, A has a static a, when we use B.a, class B did not loaed, just Class A loaded. * If B also has a static a, A and B will be loaded. * If a is finle, A and B will not be loaded both. * @author Li Guoliang * */ public class TestClassLoading { public static void main(String[] args) { System.out.println(B.a); System.out.println(C.c); } } class A { static String a = "A.a"; // how about if this is final static { System.out.println("Static_A_Class"); } { System.out.println("Instance_A"); } } class B extends A{ // static String a = "B.a"; static { System.out.println("Static_B_Class"); } } /** * This class is designed for test the squence of static variable and block. * They run by the sequence of the code. * @author Li Guoliang * */ class C { static { System.out.println("Static_C"); } static C c = new C(); public C() { System.out.println("Constructor_C"); } }
Output
Static_A_Class
A.a
Static_C
Constructor_C
scjp.liguoliang.com.C@161f10f
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.