728x90
반응형
package chap11;
/*
* Object 클래스
* 1. 모든 클래스의 부모 클래스.
* 2. 모든 클래스의 객체에는 Object 클래스의 객체를 포함한다.
* 3. 모든 클래스는 Object 클래스의 멤버에 접근할 수 있다.
*
* equals 메서드 : 동일성 판단 메서드
* Object 클래스에서는 == 연산자와 동일한 기능 구현.
* 내용비교(논리적 동등성)를 위해서는 오버라이딩이 필요함.
* 참조형 객체인 경우 내용비교를 위해서는 == 연산자 사용하지 말고 equals 메서드로 비교.
*/
class Equal extends Object{ //(extends Object) 생략되어 있음
int value;
Equal(int value) {
this.value = value;
}
//내용비교를 위한 equals 메서드 오버라이딩
@Override
public boolean equals(Object obj) {
if(obj instanceof Equal) {
Equal e = (Equal) obj;
return value == e.value;
} else return false;
}
}
public class EqualsEx1 {
public static void main(String[] args) {
Equal e1 = new Equal(10);
Equal e2 = new Equal(10);
//e1이 참조하는 객체와 e2가 참조하는 객체가 같나? X (참조하는 곳이 다름)
if(e1 == e2) System.out.println("e1 == e2: e1과 e2는 같은 객체임");
else System.out.println("e1 != e2: e1과 e2는 다른 객체임");
//equals : 내용비교를 위한 메서드
// Object 클래스에서는 내용비교 불가. == 연산자와 동일하게 구현함.
// 각각의 클래스에서 내용비교를 위해 오버라이딩 필요.
if(e1.equals(e2))
System.out.println("e1.equals(e2): e1과 e2는 같은 내용의 객체임");
else System.out.println("!e1.equals(e2): e1과 e2는 다른 내용의 객체임");
}
}
728x90
반응형