public class a{
static {
System.out.println("a的静态代码块new时执行,且一次 1111111111111");
}
public a(){
System.out.println("父构造 4444444444444444");
}
{
System.out.println(" 代码块a 333333333");
}
static void a1(){
System.out.println("我是a1静态方法");
}
public void a2(){
System.out.println("我是a2普通方法");
}
}
public class b extends a
{
static {
System.out.println("b的静态代码块new时执行,且一次 2222222222");
}
{
System.out.println("代码块b 555555555555555555555");
}
b(){
super();
System.out.println("子构造 666666666666666666666");
}
static void a1(){
System.out.println("我是继承b1静态方法");
}
public void a2(){
System.out.println("我是继承b2普通方法");
}
}
public class c {
public static void main(String[] args) {
System.out.println("========= a a = new b();======================================");
a a = new b();
a.a1();
a.a2();
System.out.println("========= b b= new b();======================================");
b b= new b();
b.a1();
b.a2();
}
}
打印执行流程
========= a a = new b();======================================
a的静态代码块new时执行,且一次 1111111111111
b的静态代码块new时执行,且一次 2222222222
代码块a 333333333
父构造 4444444444444444
代码块b 555555555555555555555
子构造 666666666666666666666
我是a1静态方法
我是继承b2普通方法
========= b b= new b();======================================
代码块a 333333333
父构造 4444444444444444
代码块b 555555555555555555555
子构造 666666666666666666666
我是继承b1静态方法
我是继承b2普通方法
Process finished with exit code 0
// 静态代码块在new时执行,全局优先
//代码块优先构造,类优先
//对于继承,的构造隐含super();
//如果main()是该类的方法,则先执行该类静态代码块