기본적으로 == 연산자와 동일한 결과 리턴 (번지 비교)
오버라이딩 필수
논리적 동등: 같은 객체이건 다른 객체이건 상관없이 객체 저장 데이터 동일
Object의 equals() 메소드를 재정의하여 논리적 동등 비교할 때 이용
// 모든 클래스들은 Object클래스를 자동으로 상속받는다.
public class Member /* extends Object */ {
public String id; // 필드선언
public Member(String id) { //생성자 추가
this.id = id; // 외부에서 id 받아 초기화
}
// equals 재정의
@Override
public boolean equals(Object obj) {
if(obj instanceof Member) {
// 강제 타입변환
Member member = (Member) obj;
// 필드 id와 member 객체의 id값 비교
if(id.equals(member.id)) {
return true;
}
}
return false;
}
}
package sec03.exam01_equals;
public class MemberExample {
public static void main(String[] args) {
Member obj1 = new Member("blue"); // 객체생성 id = blue
Member obj2 = new Member("blue"); // 객체생성 id = blue
Member obj3 = new Member("red"); // 객체생성 id = red
// 객체비교 == 사용가능
if(obj1.equals(obj2)) { //equals는 Object
System.out.println("obj1과 obj2는 동등합니다.");
}else {
System.out.println("obj1과 obj2는 동등하지 않습니다");
}
if(obj1.equals(obj3)) { //equals는 Object
System.out.println("obj1과 obj2는 동등합니다.");
}else {
System.out.println("obj1과 obj3는 동등하지 않습니다");
}
}
}
'JAVA' 카테고리의 다른 글
Object 클래스 객체복제 clone() (0) | 2022.10.07 |
---|---|
Object 클래스 객체 해시코드(hashCode()) (0) | 2022.10.07 |
제네릭 메서드 예제 (태그 설명) (0) | 2022.09.29 |
제네릭 메서드 (0) | 2022.09.29 |
제네릭 멀티 타입 파라미터 (0) | 2022.09.29 |