A类
package aa;
public class A {
static {
System.out.println("1");
}
public A(){
System.out.println("2");
}
}
B类 , B类集成A类
package aa;
public class B extends A{
static {
System.out.println("a");
}
public B(){
System.out.println("b");
}
}
调用类
package aa;
public class aa {
public static void main(String[] args) {
A ab = new B();
ab= new B();
}
}
输出
1
a
2
b
2
b
1.说明在创建子类对象的时候,会先运行父对象的static代码块,在运行子类的static代码块,然后调用父类的构造函数,在调用子类的构造函数,这时第一次创建子类对象,如果是第二次创建对象,就不会在运行static代码块.