Shallow Copy
In Shallow copy all the fields are just copied from source object to destination object.
If the source object is containing any field that holds a reference to another object then only the reference will be copied i.e. source and destination objects field(that particular field) will point to same memory location.
Java code for Shallow Copy
package shallow;
class JobDescription
{
private String designation;
public JobDescription(String designation) {
this.designation = designation;
}
public String getDesignation() {
return designation;
}
public void setDesignation(String designation) {
this.designation = designation;
}
@Override
public String toString() {
return designation;
}
}
{
private String designation;
public JobDescription(String designation) {
this.designation = designation;
}
public String getDesignation() {
return designation;
}
public void setDesignation(String designation) {
this.designation = designation;
}
@Override
public String toString() {
return designation;
}
}
class Employee implements Cloneable
{
private String name;
private JobDescription jobDescription;
public void setName(String name)
{
this.name = name;
}
public JobDescription getJobDescription() {
return jobDescription;
}
public Employee(String name,String designation)
{
this.name = name;
this.jobDescription = new JobDescription(designation);
}
public Object clone() {
try {
return super.clone();
}
catch (CloneNotSupportedException e) {
return null;
}
}
@Override
public String toString()
{
return "name: " + name + ", Job Description: " + jobDescription;
}
}
{
private String name;
private JobDescription jobDescription;
public void setName(String name)
{
this.name = name;
}
public JobDescription getJobDescription() {
return jobDescription;
}
public Employee(String name,String designation)
{
this.name = name;
this.jobDescription = new JobDescription(designation);
}
public Object clone() {
try {
return super.clone();
}
catch (CloneNotSupportedException e) {
return null;
}
}
@Override
public String toString()
{
return "name: " + name + ", Job Description: " + jobDescription;
}
}
public class ShallowCopy
{
public static void main(String[] args)
{
Employee origEmployee = new Employee("John","Manager");
System.out.println("Original [" + origEmployee + "]");
Employee cloneEmployee = (Employee)origEmployee.clone();
System.out.println("Clone [" + cloneEmployee + "]");
origEmployee.setName("Rose");
origEmployee.getJobDescription().setDesignation("Worker");
System.out.println("Original after change [" + origEmployee + "]");
System.out.println("Cloned after change [" + cloneEmployee + "]");
}
}
{
public static void main(String[] args)
{
Employee origEmployee = new Employee("John","Manager");
System.out.println("Original [" + origEmployee + "]");
Employee cloneEmployee = (Employee)origEmployee.clone();
System.out.println("Clone [" + cloneEmployee + "]");
origEmployee.setName("Rose");
origEmployee.getJobDescription().setDesignation("Worker");
System.out.println("Original after change [" + origEmployee + "]");
System.out.println("Cloned after change [" + cloneEmployee + "]");
}
}
Comments
Post a Comment