Я прочитал один абзац из Интернета о клонировании. Но я не совсем понял, так может кто-то объяснить это ясно?
Если класс имеет конечные поля, им не может быть присвоено значение в методе клонирования. Это приводит к проблемам с правильной инициализацией конечных полей объекта. Если конечное поле относится к некоторому внутреннему состоянию объекта, то клонированный объект заканчивает совместное использование внутреннего состояния, и это, безусловно, неверно для изменяемых объектов.
Для справки, вот ссылка: http://www.jusfortechies.com/java/core-java/cloning.php