원칙 예시
반사성 x.equals(x) 는 항상 true이다
대칭성 x.equals(y) = true 이면 y.equals(x) == true이다.
추이성 x.equals(y) = true, y.equals(z) = true 이면 x.equals(z) 도 true
일관성 x.equals(y) 의 값은 항상 동일해야 한다.
NotNull x.equals(null) 은 항상 false 이다.
  1. == 연산을 이용하여 입력이 자기 자신의 참조인지 확인하라
  2. instanceOf를 이용하여 올바른 타입인지 확인하라
  3. 형 변환을 이용한 후 각 필드의 값을 대조하라
  4. Object외의 매개변수인 함수를 작성하지 마라. ( 오버라이딩이 아닌 오버로딩된다. )
  5. 재정의 할 때는 HashCode도 같이 재정의 하라 → 잘못된 결과가 발생 할 수 있다