--clone() generates a duplicate copy of the object on which it is called.
--only classes that implements the Cloneable interface can be cloned.
--Cloneable defines no members (marker interface)
--because cloning can cause problems, clone () is declared as protected inside Object.
--clone() is declared in Object class.
--this means that it must either be called from within a method defined by the class that implements Cloneable, or it must be explicitly overridden by that class so that it is public.