原程序如下:
class  A
{        int  i,j;
         A(int  a,int b)
          {   i=a;j=b;  }
           void  show()
        {   System.out.println("i和j分别是"+i+"  "+j);
         }
}
class   B  extends  A
 {   int  x,y,k;
      B(int   a,int  b,int  c)
       {  super(a,b);k=c;  }
         void   show()
       {  System.out.println("x、y和k的值分别为:"+x+"  "+y+" "+k);
        }
}
class   ex_54
{    public   static   void main(String  args[])
      {  B  sub=new  B(1,2,3);
            sub.show();
       }
}
此程序输出的结果和料想的不一样呀。
我料想应该输出是:1  2 3,而实际结果却是:0 0 3.
请哪位大侠给指点一下吧。

解决方案 »

  1.   

    class b 的构造函数中,你没有给下x,y赋值,他们默认是0
      

  2.   

    你super(a,b);是调用父类的构造方法,所以a,b是给i,j赋值,不是给x,y赋值。
      

  3.   

    k 值传递没问题,但调用 show 时之前所赋值的已经被释放,所以显示为 0 0 3
      

  4.   

    B(int   a,int  b,int  c)
           {  super(a,b);k=c;  }
     ===
     B的构造函数里面只给k赋值,而没有给x,y赋值
      

  5.   

    super是调用父类构造函数
    所以没有给子类的属性赋到值
    默认为0