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

java程序问题,望高人指点,说明一下执行的过程,为何构造函数没有执行?
class   A
{
    int   x=1,y=1;
    A()
    {x=0;y=0;}
    A(int   x,int   y)
    {x=x;y=y;}
    void   setx(int   i)
    {x=i;}
    void   sety(int   i)
    {y=0;};
    void   out()
    {System.out.println( "X= "+x+ "\tY= "+y);}
}
class   B   extends   A
{
int   x=2;
float   z;
B()
{super();}
B(int   x,int   y)
{this.x=x;this.y=y;}
void   sety()
{this.y=-1;}
void   out()
{System.out.println( "X= "+x+ "\tY= "+y+ "\tZ= "+z);}
}
public   class   InitialDemo3
{
public   static   void   main(String[]   args)
{
A   a1   =   new   A(3,4);
a1.out();
a1.setx(6);
a1.out();
B   b1   =   new   B(1,2);
b1.setx(0);
b1.sety();
b1.out();
A   b2   =   new   B(5,6);
b2.setx(12);
//b2.sety();
b2.out();
}
}

------解决方案--------------------
A(int x,int y)
{x=x;y=y;}
改为
A(int x,int y)
{this.x=x;this.y=y;}

------解决方案--------------------
A(int x,int y){x=x;y=y;}
你这样赋值没有意义呀 ,你这是局部变量赋值给局部变量。
没有改变全局的x,y变量值。

alex_lu() ( ) 信誉:100 Blog 2007-03-08 08:24:39 得分: 0


A(int x,int y)
{x=x;y=y;}
改为
A(int x,int y)
{this.x=x;this.y=y;}



说的是正确的^-^