
@Override
public boolean equals(Object obj) {
if(!(obj instanceof Circle)) {
System.out.println(" [로그] 형변환 불가능한 객체");
return false;
}
Circle circle = (Circle)obj;
if(this.radius == circle.radius) {
System.out.println("반지름이 같으므로 같은 크기의 원입니다");
return true;
}
System.out.println(" [로그] radius 값이 다름");
return false;
}
클래스 Circle를 만들었다
Circle 객체의 값이 똑같은지 equals를 사용하여 비교하려고 한다
equals를 객체의 주소값을 비교하기 때문에 equals 메소드를 오버라이딩하여 재정의하고 사용하도록 한다
if(!(obj instanceof Circle)) {
왼쪽에 있는 obj 객체가 오른쪽 클래스 Circle 타입으로 형변환이 가능한지 불가능한지 instanceof 로 판단을 하고
flase 또는 true를 반환한다
예시)
package class01;
class Circle {
int radius;
String name;
double area;
final static double PI = 3.14;
// 반드시 이름 입력, 반지름 입력 안하면 1로 초기화
Circle(String name){
this(name, 1);
}
Circle(String name, int radius){
this.name = name;
this.radius = radius;
this.area = radius*radius*PI;
}
@Override
public boolean equals(Object obj) {
if(!(obj instanceof Circle)) {
System.out.println(" [로그] 형변환 불가능한 객체");
return false;
}
Circle circle = (Circle)obj;
if(this.radius == circle.radius) {
System.out.println("반지름이 같으므로 같은 크기의 원입니다");
return true;
}
System.out.println(" [로그] radius 값이 다름");
return false;
}
void printInfo() {
System.out.println(this.name + "은/는 반지름이 " + this.radius + "이고, 넓이는 " + this.area +"입니다.");
}
public int getRadius() {
return radius;
}
public void setRadius(int radius) {
this.radius = radius;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getArea() {
return area;
}
public void setArea(double area) {
this.area = area;
}
}
public class Test04 {
public static void main(String[] args) {
Circle c1 = new Circle("도넛");
Circle c2 = new Circle("피자", 5);
Circle c3 = new Circle("축구공", 5);
c1.printInfo();
c2.printInfo();
c3.printInfo();
System.out.println();
c1.equals(c2);
c1.equals(c3);
c2.equals(c3);
}
}

'에러&문제해결 > JAVA' 카테고리의 다른 글
| java.lang.NullPointerException 에러분석 & 문제해결 (0) | 2025.10.24 |
|---|---|
| 예외처리 | try~catch | java.lang.ArithmeticException (0) | 2025.10.22 |
| Selection does not contain a main type (0) | 2025.10.17 |
| eclipse | select what to : run ant build (0) | 2025.10.17 |
| Eclipse Java Project 빨간 느낌표 (0) | 2025.10.14 |