Cloning means to create a replica of something. In programming, object cloning refers to create a copy of an object. Java Object class provides the Object.clone() method to create a copy of an object (already existing). This feature is extremely handy when we must make copies of complex objects whose copying of properties would be time-consuming and prone to errors when doing it manually.

The Object.clone() method is defined in the Object class. It means every Java class inherits it by default. Its primary purpose is to return a field-by-field copy of the object on which it is invoked. However, the method is protected in the Object class it means that it cannot be directly accessed by classes unless overridden with a public scope.
The java.lang.Cloneable interface must be implemented by the class whose object clone we want to create. If we do not implement Cloneable interface, Object.clone() method generates CloneNotSupportedException.
Output:
Original Student Object: 101 - Jack Cloned Student Object: 101 - Jack After modifying cloned object: Original Student Object: 101 - Jack Cloned Student Object: 101 - Smith
Explanation
In the above program, both reference variables have the same value. Thus, the Object.clone() method copies the values of an object to another object. So, we do not need to write explicit code to copy the value of an object to another.
If we create another object by using the new keyword and assign the values of another object to this one, it will require a lot of processing on this object. Therefore, to save the extra processing task we use Object.clone() method.
The Object.clone() method saves the extra processing task for creating the exact copy of an object. If we perform it by using the new keyword, it will take a lot of processing time to be performed that is why we use object cloning.
Although Object.clone() has some design issues but it is still a popular and easy way of copying objects.
Java Object.clone() is a highly powerful technique somewhat deceitful and is capable of copying objects. With the implementation of the Cloneable interface and re-writing the clone method, developers can engage in shallow or deep copying of objects according to their needs.
Deep copying is slow and complex and shallow copying is very quick and easy. As much as cloning is convenient, the pros and cons of cloning need to be considered against the options such as copy constructors. With the current development, cloning may be either the right or wrong choice, depending on the complexity of the class, and the performance standards of the application.
We request you to subscribe our newsletter for upcoming updates.