Я сейчас занимаюсь практикой по наследованию и глубокому клонированию.
Работа посвящена переписыванию данного нам кода с использованием идей наследования и глубокого клонирования с использованием программы, которая рисует фигуры.на холст.
Сейчас я реализовал метод clone()
для суперкласса point
и моего подкласса group
, но я всегда получаю CloneNotSupportedException
с clone()
в моемподкласс, когда он компилируется, и я действительно не понимаю, почему.
Вот код для моего суперкласса:
public abstract class Point implements Cloneable
{
public Point clone()
{
try {
Point copy = (Point)super.clone();
copy.imgGroup = (ArrayList<Point>)imgGroup.clone();
return copy;
}
catch (CloneNotSupportedException e) {
throw new InternalError();
}
}
}
Вот код для моего подкласса:
public class Group extends Point implements Cloneable
{
public Group clone()
{
try {
Group copy = (Group)super.clone();
copy.group = (ArrayList<Point>)group.clone();
for (int i = 0; i < group.size(); i++) {
copy.group.set(i,group.get(i).clone());
}
return copy;
}
catch (CloneNotSupportedException e) {
throw new InternalError();
}
}
}
Задача:
Класс построения Group
.Определенный объект Figure
можно добавить в несколько разных групп.Вы должны определить, может ли один и тот же объект Figure
принадлежать нескольким группам одновременно или нет.В этом упражнении этого не должно быть.Все Group
объекты должны владеть исключительно объектами своих предметов.Совместное использование объектов несколькими группами невозможно.
Поэтому начнем с добавления метода:
public Figure class clone ();
// (define it in the same style as on page 4 in the document below)
// this was what point clone() was in the class Point.
После этого были инструкции по реализации некоторых методов и клон Group
.
Так что в этой задаче я должен реализовать Group
различными методами вместе с новым clone()
, с чем у меня сейчас проблема.
Я надеюсьВы можете помочь указать мне правильное направление, просто хотел знать, почему это происходит.Спасибо!