public class A{
 public int a;
 public A(){ }
 public A(int a){
  this.a=a;
 }
 public int getA(){ return a; }
 public void setA(int a){ this.a=a; }
}public class B extends A{
 public B(int a){
  super(a);
 }
 public void showQuestion(){
  System.out.println("未修改之前:"+this.a);
  this.setA(2);
  System.out.println("修改之后:子类"+this.a);
  System.out.println("修改之后:父类"+super.a);
  super.setA(3);
  System.out.println("修改之后:子类"+this.a);
  System.out.println("修改之后:父类"+super.a);
 }
}
我的问题是,为何无论用this修改a的值还是用super修改a的值 最后它俩的值都是一样的呢?难道它俩地址一样吗 还是子类用的是父类a的复本,还是一直调用的就是父类的a 这些情况我也只是猜测……不要骂我 希望高手指点一二

解决方案 »

  1.   

    因为this.a这个a,就是super.a里面的那个a
    你说得对,地址是一样的
      

  2.   

    因为你用super关键字,所以是同一个a
      

  3.   

    super(a)传到父类的一个参数的构造方法,在构造方法里面得到子类传过来的参数,this.a=a是把传过来的参数赋值给成员变量。
      

  4.   

    你this是在基类A中的,super是在父类B中的,B是继承A的,这一点搞清楚就知道了
      

  5.   

    你this是在基类A中的,super是在父类B中的,B又继承A,这点搞懂就知道了
      

  6.   

    this 是当前类,super是调用父类
      

  7.   

    super 就是继承父类的方法,所以是一样的
      

  8.   

    当然都是一样的啦~ this.a继承父类方法  super.a是调用父类方法  都一样 结果当就一样
      

  9.   

    当然一样啦 this.a继承父类方法,super.a调用父类方法   方法一样结果就一样