本帖最后由 疲劳的小马 于 2014-2-24 02:05 编辑  
 
先给你看个我自己写的代码:class A  
{ 
        static  
        { 
                System.out.println("A的静态代码块"); 
        } 
 
        { 
                System.out.println("A的构造代码块"); 
        } 
 
        A() 
        { 
                System.out.println("A的构造函数"); 
        } 
} 
class B extends A  
{ 
        static  
        { 
                System.out.println("B的静态代码块"); 
        } 
 
        { 
                System.out.println("B的构造代码块"); 
        } 
 
        B() 
        { 
                System.out.println("B的构造函数"); 
        } 
} 
class Demo 
{ 
        public static void main(String[] args)  
        { 
                B b=new B(); 
        } 
} 
/*运行结果 
A的静态代码块 
B的静态代码块 
A的构造代码块 
A的构造函数 
B的构造代码块 
B的构造函数 
*/ 
如果B继承A,AB都有静态代码块,也有构造代码块,那么初始化的顺序肯定是:先执行A的静态代码块,然后B的静态代码块,然后A的构造代码块,A的构造函数方法,然后B的构造代码块,B的构造函数方法。即先初始化父类的,然后初始化子类的。 
 
 
 |