在本类中实例化对象后改变属性值,怎么输出还是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());
}
} 展开
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());
}
} 展开
展开全部
看方法
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()); }
}
在自己的内部实例化自己,返回的又是自己的变量,没有意义。
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()); }
}
在自己的内部实例化自己,返回的又是自己的变量,没有意义。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
都不是同一个age 你返回的age 没有指定 如果return A2.age 就是22
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询