我的代码如下:
public abstract class Example1 {
abstract void testAbstract();
Example1(){//(1)首先执行父类构造方法
System.out.println("before testAbstract()");
testAbstract();//如果调用了抽象方法,调用子类覆盖的方法。这里调用Atest类的testAbstract()方法
System.out.println("after testAbstarcat()");
}
public static void main(String args[]){
new Atest();
}
}
class Atest extends Example1{
private int i=1;//(2)使成员变量进行初始化
void testAbstract(){
System.out.println("testAbstract()"+i);
}
public Atest(){//(3)调用子类构造方法
System.out.println(i);
}
}
Eclipse执行结果如下:
before testAbstract()
testAbstract()0
after testAbstarcat()
1
我刚接触java不久,请教为什么是“testAbstract()0”而不是“testAbstract()1”?