- 为什么需要复制构造函数
- 何时需要复制构造函数
以下是我已经阅读过的一些链接,以便了解什么是复制构造函数。
http://www.programmerinterview.com/index.php/java-questions/how-copy-constructors-work/
https://deepeshdarshan.wordpress.com/2013/12/05/copy-constructors-in-java/
第二个链接解释了何时和哪里需要使用复制构造函数。但我仍然不太清楚。以下是我的Employee.java类:
package com.test;
/**
* @author avinashd
*
*/
public class Employee {
private String rollNo;
private String name;
//constructor
public Employee(String rollNo, String name){
this.rollNo = rollNo;
this.name = name;
}
//copy constructor
public Employee(Employee employee){
this.rollNo = employee.rollNo;
this.name = employee.name;
}
public String getRollNo() {
return rollNo;
}
public void setRollNo(String rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
复制构造函数用于创建一个与现有对象具有相同值的精确副本。
例如,假设我们有一个员工,其值为rollNo: 1
和name: avinash
。复制构造函数将创建一个类似的对象,其值为rollNo: 1
和name: avinash
。但是这两个对象是不同的,对一个对象值的更改不会影响另一个对象。
问题在于:
当我们有一个构造函数时
public Employee(String rollNo, String name){
this.rollNo = rollNo;
this.name = name;
}
创建一个对象,我们可以调用同样的构造函数来创建另一个对象。但是为什么我们需要调用复制构造函数?在什么情况下需要调用它?请解释。
employee.getRollNo()
代替employee.rollNo
,使用employee.getName()
代替employee.name
。 - Makaveli84get
和set
方法,因为这些方法可能包含特定和/或额外的实现细节,超出了简单的字段赋值。 - Makaveli84