1.父类静态代码块 ( java虚拟机加载类时,就会执行该块代码,故只执行一次)
2 .子类静态代码块 ( java虚拟机加载类时,就会执行该块代码,故只执行一次)
3.父类属性对象初始化
4.父类普通代码块(每次new,每次执行)
5.父类构造函数(每次new,每次执行)
6.子类属性对象初始化
7.子类普通代码块(每次new,每次执行)
8.子类构造函数(每次new,每次执行)
9.子类重写父类方法,调用时会调用子类重写之后的方法
案例一
classX{
Y y=newY();
publicX(){
System.out.print("X");
}
}
classY{
publicY(){
System.out.print("Y");
}
}
publicclassZ extendsX{
Y y=newY();
publicZ(){
System.out.print("Z");
}
publicstaticvoidmain(String[] args) {
newZ();
}
}
解析:3568
答案:YXYZ
案例二
publicclassDemo { classSuper{ intflag=1;
Super(){
test();
} voidtest(){
System.out.println("Super.test() flag="+flag);
}
} classSub extendsSuper{
Sub(inti){ flag=i;
System.out.println("Sub.Sub()flag="+flag);
} voidtest(){
System.out.println("Sub.test()flag="+flag);
}
} publicstaticvoidmain(String[] args) { newDemo().newSub(5);
}
}
解析:359 68
答案:
Sub.test() flag=1
Sub.Sub() flag=5