本帖最后由 疲劳的小马 于 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的构造函数方法。即先初始化父类的,然后初始化子类的。
|