Вы не можете этого сделать, он не скомпилируется, потому что у вас есть два метода с одинаковым именем и одинаковыми параметрами (в данном случае ни одного), и если вы вызываете somePoint.clone()
, не ясно, какой из них имеется в виду.
Вы должны сделать что-то вроде:
public Point clone() {
return (Point) super.clone(); // shallow copy
}
Редактировать: некоторые тонкости: ваш класс должен реализовывать клонируемый интерфейс, иначе super.clone () выдаст исключение.Метод clone () в классе Object возвращает поверхностную копию текущего объекта (его класс времени выполнения будет таким же, как у объекта, для которого был вызван метод clone).Тогда ваша задача - выполнить какие-либо специфические для класса манипуляции с этим объектом (например, клонировать ссылки на другие объекты) и затем вернуть его.Тип возвращаемого значения может быть вашим собственным классом вместо Object, и он все равно будет перезаписывать Object.clone () (или любой другой метод ParentClass.clone ()).