【发布时间】:2021-03-17 17:14:20
【问题描述】:
我在嵌入式 C 方面有比较好的经验后开始学习 java,并尝试应用一些简单的练习来确保对 java 主题的良好理解, 这是一个简单的练习,我创建了一个复制构造函数来基于现有对象创建一个新对象:
public class A {
private int a = 2;
private int b = 2;
public A(int a, int b) {
this.a = a;
this.b = b;
}
public A(A r) {
r.a=r.a + this.a;
r.b=r.b + this.b;
}
String getDetail() {
return "{"+a+","+b+"}";
}
public static void main(String[] args) {
A r = new A(1,1);
A a = new A(r);
System.out.println(a.getDetail());
}
}
这是我期望的输出:{3,3}
但这是我得到的:{2,2}
你能解释一下为什么吗?提前致谢!
【问题讨论】:
-
你认为
r.a=r.a + this.a;会做什么? -
这会将默认值“2”添加到“r.a”
-
你要修改的是
r还是a(构造函数中的this)?
标签: java oop copy-constructor