练习java的运行顺序测试,代码如下:
package com.zte.exam;
public class Test {
public static void main(String []args){
new B();
}
}
class A{
int x=10;
public A(){
run();
}
public void run(){
System.out.println(x);
}
}
class B extends A{
int x=20;
public B(){
run();
}
public void run(){
System.out.println(x);
}
}
运行结果:
0
20
输出解析:
1、new A(),运行A的构造函数,此时A的x为10。
2、B的run()重写了A的run()方法,此时A跑的run()方法是B的run()方法,用的x也是B的x,此时B的x还没赋值,所以是0。
3、运行完A的构造函数,开始执行B的构造函数,此时B的x为20 。
4、跑B的run()方法,输出B的x值20。