Language/Java

equals() 오버라이딩

Jinn 2023. 6. 28. 08:59
public class Main {
	public static void main(String[] args) {
    	Value v1 = new Value(10);
        Value v2 = new Value(10);
        
        if(v1.equals(v2))
        	System.out.println("v1과 v2는 같습니다.");
        else
        	System.out.println("v1과 v2는 다릅니다.");
    }
}

class Value {
	int value;
    
    Value(int value) {
    	this.value = value;
    }
    
    public boolean equals(Object obj) { // 객체 주소 비교
    	return this==obj;
    }
}

// v1과 v2는 다릅니다.
public class Main {
	public static void main(String[] args) {
    	Value v1 = new Value(10);
        Value v2 = new Value(10);
        
        if(v1.equals(v2))
        	System.out.println("v1과 v2는 같습니다.");
        else
            System.out.println("v1과 v2는 다릅니다.");
    }
}

class Value {
	int value;
    
    Value(int value) {
    	this.value = value;
    }
    
    public boolean equals(Object obj) {
    	if(obj instanceof Value) { // obj는 모든 객체가 들어올 수 있으므로 Value 객체인지 확인
            // 형변환 필요. obj에는 value 변수가 없음
            // 객체 주소가 아닌 인스턴스 변수(value)를 비교
            return this.value == ((Value)obj).value;
        } else {
            return false;
        }
    }
}

// v1과 v2는 같습니다.