강의로 돌아가기
이두원

강좌에서 Student 클래스에 오버라이딩된 eqauls 메소드(number 변수) 에서 어떤 조건에서 true로 반환하는지 궁금합니다.

@Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Student other = (Student) obj;
        if (number == null) {
            if (other.number != null)
                return false;
        } else if (!number.equals(other.number))
            return false;
        return true;
}

강의 감사합니다.

강의안에서 Student클래스의 s1과 s2를 오버라이딩 하여 구현한 eqauls 함수로 비교했잖아요~
그런데 equlals 메소드 안에서 5개정도의 if문이 자동으로 구현되어 있는데 어떤 조건에서 true로 리턴하는지 궁금합니다.

1 개의 답변
Demi
@Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Student other = (Student) obj;
        if (number == null) {
            if (other.number != null)
                return false;
        } else if (!number.equals(other.number))
            return false;
        return true;
}

equals 메소드의 코드를 보면 파라미터로 들어온 obj

  1. null이거나,
  2. Student 클래스가 아니거나
  3. 멤버변수 number의 값이 다르면

false를 리턴하고, 그렇지 않으면 true를 리턴합니다.

동영상강의 7:18의 20번째 줄, s1.equals(s2)에서 s2는 null이 아니고, Student 클래스이고, 멤버변수 number의 값이 s1의 멤버변수 number의 값과 같으므로 s1.equals(s2)는 true를 리턴하겠지요.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.