Я проходил через Copy Constructors, я прошел через ссылки в стеке над потоком и другими. Но я не понимаю следующие моменты.
- Зачем нам нужен конструктор копирования
- Когда нам понадобится Копировать конструктор
Я имею в виду, что такое точная ситуация или сценарий, который нам нужен для использования Copy Constructor. Может ли кто-нибудь объяснить с помощью примера или указать ссылки, чтобы я мог разобраться и понять их в понятном виде.
Ниже приведены ссылки, которые я прочитал, чтобы понять, что такое конструктор копирования.
http://www.programmerinterview.com/index.php/java-questions/how-copy-constructors-work/
https://deepeshdarshan.wordpress.com/2013/12/05/copy-constructors-in-java/
Вторая ссылка объясняет "почему" и "where" используется конструктор копирования. Но я все еще не понимаю.
Ниже мой класс 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;
}
}
Copy Constructor используется для создания и точной копии объекта с теми же значениями существующего объекта.
Скажем, например, у нас есть Сотрудник со значениями как rollNo: 1
и name: avinash
. Copy Constructor создаст аналогичный объект со значениями rollNo: 1
и name: avinash
. Но оба они являются двумя разными объектами, а изменения значений объекта не влияют на другой объект.
Вопрос здесь
Если у нас есть такой конструктор, как
public Employee(String rollNo, String name){
this.rollNo = rollNo;
this.name = name;
}
для создания объекта. Мы можем вызвать тот же конструктор для создания другого объекта. Но почему нам нужно вызвать конструктор копирования. Когда нам нужно его называть? Пожалуйста, объясните