본문 바로가기
Back-end

Object.equals()를 재정의 해야 하는 이유

by 신재권 2023. 8. 24.

Object

Object 클래스는 모든 클래스의 최상위 클래스이다.

항상 모든 클래스는 Object 클래스를 extend 한다.

즉, Object 클래스에 있는 메서드도 사용이 가능하다.

왜 equals()를 오버라이딩 해야하는가?

equals()는 자바에서 동등성 비교를 할 때 사용하는 연산이다.

즉, 값 비교를 할 때 사용한다.

public boolean equals(Object obj) {
        return (this == obj);
}

해당 equals()는 Object 클래스에 구현되어 있는 메서드이다.

즉, Object.equals()를 재정의 하지 않을 경우 동일성 비교만 한다.

자바에서 == 연산은 동일성을 비교하는 것이고, 동일성을 비교한다는 것은 같은 주소를 가지고 있는지 비교하는 것이다.

기존 equals() 메서드는 동등성 비교를 위한 것인데, 동일성 비교만 하는 것이다.

동일성을 만족하면, 동등성도 만족하지만, 동등성을 만족한다고 동일성을 만족하는 것은 아니다.

그래서 해당 객체를 동일성을 비교해야 하는 작업에 equlas() 재정의를 하지 않으면 문제가 발생한다.

'Back-end' 카테고리의 다른 글

JDBC  (0) 2023.08.24
가상 머신(스택 기반, 레지스터 기반)  (0) 2023.08.24
sychronized, Atomic  (0) 2023.08.24
Servlet, ServletContainer vs DispatcherServlet  (0) 2023.08.24
volatile  (0) 2023.08.23