0% found this document useful (0 votes)
27 views

Cloneobject

The document discusses object cloning in Java. It provides an example of a shallow copy where changes to the cloned object are reflected in the original. A deep copy is also demonstrated where changes are not reflected due to the nested object being separately cloned. Inheritance is shown where a PhysicsTeacher class extends the Teacher class and can access protected fields and methods.

Uploaded by

suresh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views

Cloneobject

The document discusses object cloning in Java. It provides an example of a shallow copy where changes to the cloned object are reflected in the original. A deep copy is also demonstrated where changes are not reflected due to the nested object being separately cloned. Inheritance is shown where a PhysicsTeacher class extends the Teacher class and can access protected fields and methods.

Uploaded by

suresh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

OBJECT CLONE:

import java.io.*;
class Test
{
    int x, y;
    Test()
    {
        x = 10;
        y = 20;
    }
}
  
class Main
{
    public static void main(String[] args)
    {
         Test ob1 = new Test();
  
         System.out.println(ob1.x + " " + ob1.y);
  
         // Creating a new reference variable ob2
         // pointing to same address as ob1
         Test ob2 = ob1;
  
         // Any change made in ob2 will be reflected
         // in ob1
         ob2.x = 100;
  
         System.out.println(ob1.x+" "+ob1.y);
         System.out.println(ob2.x+" "+ob2.y);
    }
}

SHALLOW COPY:

import java.util.ArrayList;
  
// An object reference of this class is
// contained by Test2
class Test
{
    int x, y;
}
  
// Contains a reference of Test and implements
// clone with shallow copy.
class Test2 implements Cloneable
{
    int a;
    int b;
    Test c = new Test();
    public Object clone() throws
                   CloneNotSupportedException
    {
        return super.clone();
    }
}
  
Public class Main
{
    public static void main(String args[]) throws  CloneNotSupportedException
    {
       Test2 t1 = new Test2();
       t1.a = 10;
       t1.b = 20;
       t1.c.x = 30;
       t1.c.y = 40;
  
       Test2 t2 = (Test2)t1.clone();
  
       // Creating a copy of object t1 and passing
       //  it to t2
       t2.a = 100;
  
       // Change in primitive type of t2 will not
       // be reflected in t1 field
       t2.c.x = 300;
  
       // Change in object type field will be
       // reflected in both t2 and t1(shallow copy)
       System.out.println(t1.a + " " + t1.b + " " +
                          t1.c.x + " " + t1.c.y);
       System.out.println(t2.a + " " + t2.b + " " +
                          t2.c.x + " " + t2.c.y);
    }
}

DEEP COPY

// A Java program to demonstrate deep copy

// using clone()

import java.util.ArrayList;

// An object reference of this class is

// contained by Test2

class Test

{
int x, y;

// Contains a reference of Test and implements

// clone with deep copy.

class Test2 implements Cloneable

int a, b;

Test c = new Test();

public Object clone() throws

CloneNotSupportedException

// Assign the shallow copy to new reference variable t

Test2 t = (Test2)super.clone();

t.c = new Test();

// Create a new object for the field c

// and assign it to shallow copy obtained,

// to make it a deep copy

return t;

}
}

public class Main

public static void main(String args[]) throws

CloneNotSupportedException

Test2 t1 = new Test2();

t1.a = 10;

t1.b = 20;

t1.c.x = 30;

t1.c.y = 40;

Test2 t3 = (Test2)t1.clone();

t3.a = 100;

// Change in primitive type of t2 will not

// be reflected in t1 field

t3.c.x = 300;

// Change in object type field of t2 will not

// be reflected in t1(deep copy)

System.out.println(t1.a + " " + t1.b + " " +

t1.c.x + " " + t1.c.y);

System.out.println(t3.a + " " + t3.b + " " +


t3.c.x + " " + t3.c.y);

class Teacher {
String designation = "Teacher";
String collegeName = "sdlctraining";
void does(){
System.out.println("Teaching");
}
}

public class PhysicsTeacher extends Teacher{


String mainSubject = "java";
public static void main(String args[]){
PhysicsTeacher obj = new PhysicsTeacher();
System.out.println(obj.collegeName);
System.out.println(obj.designation);
System.out.println(obj.mainSubject);
obj.does();
}
}

You might also like