Yes, the idea is that if a class wants to permit cloning then it should implement the Cloneable interface and override the default protected clone method with a public clone method. But unfortunately the Cloneable interface does not define a clone method and the whole thing is a mess really, which is why it is preferable to provide a copy constructor or static factory method instead where possible.