If a class, or one of its superclasses, implements the
or:
if you are going to write a
If the object on which
The simplest way to make your class cloneable is to add
For some classes, the default behavior of
Cloneable
interface, you can use the clone()
method to create a copy from an existing object. To create a clone, you write:aCloneableObject.clone();
Object
's implementation of this method checks to see whether the object on which clone()
was invoked implements the Cloneable
interface. If the object does not, the method throws a CloneNotSupportedException
exception. Exception handling will be covered in a later lesson. For the moment, you need to know that clone()
must be declared asprotected Object clone() throws CloneNotSupportedException
public Object clone() throws CloneNotSupportedException
clone()
method to override the one in Object
.If the object on which
clone()
was invoked does implement the Cloneable
interface, Object
's implementation of the clone()
method creates an object of the same class as the original object and initializes the new object's member variables to have the same values as the original object's corresponding member variables.The simplest way to make your class cloneable is to add
implements Cloneable
to your class's declaration. then your objects can invoke the clone()
method.For some classes, the default behavior of
Object
's clone()
method works just fine. If, however, an object contains a reference to an external object, say ObjExternal
, you may need to override clone()
to get correct behavior. Otherwise, a change in ObjExternal
made by one object will be visible in its clone also. This means that the original object and its clone are not independent—to decouple them, you must override clone()
so that it clones the object and ObjExternal
. Then the original object references ObjExternal
and the clone references a clone of ObjExternal
, so that the object and its clone are truly independent.
No comments:
Post a Comment