Я пишу эту маленькую программу, но в ней есть ошибка, которую я не могу найти. Я искал и читал об этом в inte rnet в течение нескольких часов, но продолжаю получать одно и то же сообщение об ошибке: java: clone () имеет защищенный доступ в java .lang.Object. Я пытаюсь реализовать метод clone () в Point, чтобы после выполнения Main только c1 делал moveTo. Может кто-нибудь сказать, пожалуйста, в чем проблема и как ее решить?
public class Main {
public static void main(String[] args) {
Point p = new Point(5,7);
Circle c1 = new Circle(p, 3);
Circle c2 = new Circle(p, 5);
System.out.println("c1 = " + c1);
System.out.println("c2 = " + c2);
c1.moveTo(2,3);
Circle cloned = (Circle) c2.clone();
System.out.println("c1 = " + c1);
System.out.println("c2 = " + c2);
} }
public class Circle {
public final Point center;
public final int radius;
public Circle(Point center, int radius) {
this.center = center;
this.radius = radius;
}
public void moveTo(int x, int y){
center.setX(x);
center.setY(y);
}
@Override
public String toString() {
return "Circle{" +
"center=" + center.toString() +
", radius=" + radius +
'}';
} }
public class Point implements Cloneable{
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
@Override
public String toString() {
return "Point{" +
"x=" + x +
", y=" + y +
'}';
} }