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

解决方案 »

  1.   

    当你创建一个子类对象实例的时候 Child child=new Child(); 会调用父类的无参数构造器 所以打印了一个0
      

  2.   

    执行子类的构造方法的时候,会先初始化父类的。。所以,在你父类中调用了this.print();而这是一个抽象方法,所以又调用到子类的实现方法,这个时候你的a还没有被赋值,所以是default的值,即0。所以出现了,先打印0,后打印3的结果。