有关抽象类的问题,请教!
[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的结果。