Напишите конструктор копирования в вашем классе Color:
abstract class Color {
private String colorModel;
private float transparency;
public Color(Color c) {
this.colorModel = c.colorModel;
this.transparency = c.transparency;
}
}
Я бы не рекомендовал клонировать или Cloneable
.
Другая идея - сделать Color неизменным.Таким образом, вы можете безопасно делиться ссылками на цвета между Shapes;не нужно клонировать или копировать таким образом.
На случай, если неясно, вот как будет выглядеть неизменный цвет:
public final class Color {
private final String colorModel;
private final float transparency;
public Color(String colorModel, float transparency) {
this.colorModel = colorModel;
this.transparency = transparency;
}
public String getColorModel() { return this.colorModel; }
public float getTransparency() { return this.transparency; }
}