当你申明了一个a 对象时 默认的先用 父类的构造函数 public A(){
this.print() ;
}
去初始化
这时你的x 值所在的子类构造函数 public B(int x){
this.x = x ;
}
还没有被执行;
就去执行 public void print(){
System.out.println("x = " + x) ;
}
所以为零
----------------------------------
个人理解 如果有误 请指正 谢谢
abstract class A{
public abstract void print() ;
};
class B extends A{
private int x = 100 ;
public B(int x){
this.x = x ;
this.print() ;
}
public void print(){
System.out.println("x = " + x) ;
}
};
public class TestJava{
public static void main(String args[]){
A a = new B(10) ;
}
};