版权声明:转载请在开头注明博客原地址,谢谢! https://blog.csdn.net/qq_35928566/article/details/82219766
继承执行先后顺序
class A {
public A(){
init();
}
void init(){
}
}
class B extends A{
int a;
public B(){
super();
a=10;
}
@overwrite
void init(){
System.out.println(a);
System.out.println("this is B");
}
}
上述两个类,在B初始化的时候先后顺序如下:
A() —> B.init() —>B()
输出结果如下:
0
this is B
因为在输出a的时候,B的构造方法还没有被执行,所以a=0;
修改代码如下
class A {
public A(){
init();
}
void init(){
}
}
class B extends A{
int a;
public B(){
super();
a=10;
System.out.println(a);
}
@overwrite
void init(){
System.out.println("this is B");
}
}
输出结果如下:
this is B
10
结果显而易见了。