Calling overridable methods from the clone() method is dangerous for two reasons. First, a malicious subclass may override the method and affect the behavior of the clone() method. Second, a trusted subclass may observe the object in an uninitialized state because before its construction has concluded. It is possible to leave the clone as well as the object being cloned, in an inconsistent state.
...