"Подкласс может вызвать защищённый метод clone только для клонирования своих собственных объектов. Чтобы клонировать другие объекты, метод clone следует переопределить и сделать открытым.""Подкласс"... Подкласс класса Object, т.е. практически любой класс.
"... только для клонирования своих собственных объектов." И только в собственных методах.
"Чтобы клонировать другие объекты, метод clone следует переопределить и сделать открытым." Переопределение и открытость не означает, что другие объекты можно будет просто так клонировать. Их метод clone тоже работает только в их коде.
"Для того, чтобы программист мог [реализовать клонирование], класс должен выполнить следующее: 1) реализовать интерфейс Clonable; [и, для глубокого копирования,] 2) переопределить метод clone с модификатором доступа public".
"Интерфейс [Clonable] служит просто в качестве дескриптора, указывающего на то, что в данном случае разработчик класса понимает, как выполняется процесс клонирования. Объекты настолько настороженно относятся к клонированию, что возбуждают проверяемую [checked] исключительную ситуацию, если объект требует выполнения клонирования, но не реализует интерфейс Clonable".
"Интерфейс Clonable - один из немногих помеченных интерфейсов (tagged) в языке Java. Помеченные интерфейсы не имеют методов; их единственное предназначение - позволить использовать оператор instanceof для проверки типа."
"Даже если применение метода clone по умолчанию (поверхностное копирование) вполне допустимо, в любом случае нужно реализовать интерфейс Clonable, переопределить метод clone, сделав его открытым, вызвать метод super.clone() и перехватить исключительную ситуацию CloneNotSupportedException."
Комментариев нет:
Отправить комментарий