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();
}
}

解决方案 »

  1.   

    为什么在A a1 = new A(3,4);执行后,x和y的值仍然=1,网高人指点。
      

  2.   

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

  3.   

    设个断点debug一下不就行了。
      

  4.   

    我没有用IDE工具,想知道,为什么A(int x,int y){x=x;y=y;}不行
      

  5.   

    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;}  
     
    说的是正确的^-^