public class Point {
private int x;
private int y;
Point(int x, int y){
this.x = x;
this.y = y;
}
public String toString(){
return "x = " + x + "," + "y = " + y;
}
}
import java.util.Objects;
public class Circle implements Cloneable{
private Point point;
private int radius;
Circle(int x, int y, int radius){
this.radius = radius;
point = new Point(x, y);
}
public String toString(){
return "원점은 " + point + "이고," + "반지름은 " + radius + "입니다.";
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
Circle circle = (Circle) o;
return radius == circle.radius && Objects.equals(point, circle.point);
}
@Override
public int hashCode() {
return Objects.hash(point, radius);
}
}
public class ObjectCloneTest {
public static void main(String[] args) throws CloneNotSupportedException {
Circle circle = new Circle(10, 20, 30);
Circle copyCircle = (Circle) circle.clone();
System.out.println(circle);
System.out.println(copyCircle);
System.out.println(circle.hashCode());
System.out.println(copyCircle.hashCode());
System.out.println(System.identityHashCode(circle));
System.out.println(System.identityHashCode(copyCircle));
}
}