java 继承类 变量、静态变量、构造函数执行顺序
java?继承类?变量、静态变量、构造函数执行顺序class?C{
?static?int?prt(int?i){
??System.out.println(i);
??return?i;
?}
}
class?A{
?int?a=C.prt(0);
?static?int?b=C.prt(1);
?A(){
??System.out.println("constructor?of?A");
?}
}
class?B?extends?A{
?int?c=C.prt(2);
?static?int?d=C.prt(3);
?B(){
??System.out.println("constructor?of?B");
?}
?public?void?test(){
??System.out.println("begin...");
?}
}
public?class?orderTest{
?public?static?void?main(String[]?args){
??B?b=new?B();
??b.test();
?}
}
执行结果:
1
3
0
constructor?of?A
2
constructor?of?B
begin...
可以看出包含普通变量、静态变量、构造函数、继承类的执行顺序为:
1、父类的静态变量;
2、子类的静态变量;
3、父类的普通变量、父类的构造函数;
4、子类的普通变量、子类的构造函数;
5、普通方法。