日期:2014-05-20  浏览次数:20609 次

有关抽象类的问题,请教!
[code=Java][/code]
abstract class Base{
public abstract void print();
public Base() {
this.print();

}
}
 class Child extends Base{
private int a=3;
@Override
public void print() {
System.out.println(a);
}
 }
public class InterfacePractice {
public static void main(String[] args) {
Child child=new Child();
child.print();
}

}


为什么执行的结果是:
0
3

------解决方案--------------------
执行子类的构造方法的时候,会先初始化父类的。。

所以,在你父类中调用了this.print();而这是一个抽象方法,所以又调用到子类的实现方法,这个时候你的a还没有被赋值,所以是default的值,即0。

所以出现了,先打印0,后打印3的结果。