在本类中实例化对象后改变属性值,怎么输出还是56啊?

classA{privateintage=56;publicinttell(){AA2=newA();A2.age=22;returnage;}}publicclassR... class A {
private int age=56 ;

public int tell() {
A A2 = new A();
A2.age = 22;
return age;
}

}
public class Reference {
public static void main(String[] arges) {
A a1 = new A();
System.out.println(a1.tell());
}
}
展开
 我来答
浪子天vvv
2013-10-31 · TA获得超过585个赞
知道答主
回答量:93
采纳率:0%
帮助的人:61.5万
展开全部
tell()方法中的 A2.age = 22 是对新建的一个对象A2中的age属性赋值为22。return age 则是返回的本类(对象)中的age 值。所以,tell()方法中返回的age就是初始化的值56。把A2.age改成age=22,结果就是22了。
妥协沵旳倔强
2013-10-31 · 超过13用户采纳过TA的回答
知道答主
回答量:23
采纳率:0%
帮助的人:28.4万
展开全部

看方法

 public int tell() {
  A A2 = new A();
  A2.age = 22;
  return age;
 }

方法中新创建了一个对象A2,为A2的age属性赋值为22。但并没有改变当前对象的age,返回的也是当前对象的age。两个对象就像两个人是独立存在的,改变其中一个不会改变另外一个。 

class A {
 private int age=56 ;
 
 public int tell() {
  this.age = 22;
  return age;
 }
 
}
public class Reference {
 public static void main(String[] arges) {
  A a1 = new A();
  System.out.println(a1.tell());
 } 
}

在方法中改变当前对象的内容,为当前对象赋值22,

System.out.println(a1.tell());打印结果为22

追问
意思是对象a1调tell方法后,重新生成了个A2对象,这个A2对象的age是22,但不会返回这个值,return返回的仍旧是a1对象的age。是这样吗?
追答

是的。如果你return A2.age;则是返回A2对象的age。

你看:你调用a1.tell();方法,就代表着tell();方法的当前对象是a1,而a1.age的值是56。

在A类里面,你写age;代表这是当前对象的age。 给你看个小说明

//A类被实例化,因为当前对象是a1,所以a1的age是56
class A {
 private int age=56 ;
  public A(){}
  public A(int age) {
      this.age = age;
  }
  //a1的tell()方法
 public int tell() {
  this.age = 22;//this表示当前对象,即main方法的a1
  
  
  A A2 = new A();
  A2.age = 22;//A2表示新的对象,A2.age则是新对象的age,这个A2对象是在a1对象的方法体内new的,它属于a1对象的方法内的新对象
  
  
  int age = 22;//如果在方法内声明了一个age变量
  //return this.age; 如果要返回当前对象的age,则由于方法内也有个age,所以需要加上this表明要返回的时当前对象的属性.. 这就是多数构造方法内this.age = age;的原因了。看上面
  //return age; 否则会默认返回方法内声明的age
  //return A2.age;//返回A2对象的age。
  return age;
 }
  
}
public class Reference {
 public static void main(String[] arges) {
 //a1是A类的实例化对象引用。
  A a1 = new A();
  //调用a1的tell()方法。
  System.out.println(a1.tell());
 } 
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-31
展开全部
class A {
private int age=56 ;
public A(){
}
public A(int age){
this.age=age;

}
public void setAge(int age){
this.age=age;

}

public int tell() {
return age;
}
}

public class Reference {
public static void main(String[] arges) {
A a1 = new A(22);
System.out.println(a1.tell());

A a2= new A();
a2.setAge(22)
System.out.println(a2.tell()); }
}

在自己的内部实例化自己,返回的又是自己的变量,没有意义。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
哥不是传说71
2013-10-31
知道答主
回答量:70
采纳率:0%
帮助的人:16.2万
展开全部
都不是同一个age 你返回的age 没有指定 如果return A2.age 就是22
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式