经常在源码里看见 A(A a)类似的构造函数,为什么经常需要一个相同的对象去构造同类的对象?
目的:保存对象某个时刻下的状态
因为对象是应用类型,对象赋值是指向同一个对象,所以如果需要保存对象某个时刻的状态,就需要A(A a)构造函数来new一个新的对象。
class Student {
private String name;
private int age;
public void setAge(int age) {
this.age = age;
}
public Student(String name) {
this.name = name;
}
public Student(Student student) {
this.name = student.name;
this.age = student.age;
}
}
Student s1 = new Student("王麻子");
s1.age=23;
//此时要保存s1此刻的状态
Student s2 = new Student(s1);