Если нужно, чтобы переменная Копия представляла собой новый объект, в первый момент своего существования идентичный объекту Оригинал, но совершенно независимый от него, используйте метод clone.
Метод clone является защищённым (protected) методом класса Object, т.е. его нельзя вызвать непосредственно. Только класс Employee может клонировать объекты своего класса. У этого ограничения есть существенная причина. Подумайте о способе, которым класс Object может реализовать метод clone. Ему вообще ничего неизвестно об объекте, поэтому он может копировать лишь поля. Если все поля класса являются числовыми или имеют другой основной тип, их копирование выполняется прекрасно. Однако если объект содержит ссылку на подобъект, то и оригинал, и клонированные объекты будут совместно использовать одну и ту же информацию.
"... его нельзя вызвать непосредственно."
То есть нельзя в методе одного класса создать экземпляр другого класса и вызвать его метод clone().
"Только класс Employee может клонировать объекты своего класса."
Только в коде класса Employee можно вызвать метод clone объекта типа Employee, и нигде более.
... операция клонирования по умолчанию является "поверхностной" - она не клонирует объекты, на которые есть ссылки в других объектах.
Если подобъект, используемый совместно как оригиналом, так и поверхностным клоном, является неизменяемым (immutable), это вполне безопасно.
Какие классы являются неизменяемыми? String, ...