[Java] object (2) (feat. equals)

SeongEon Kim·2022년 6월 8일
0

JAVA

목록 보기
39/52

오늘은 객체 지향에서 equals에 대해 알아보자.
아래 코드를 살펴보자.

package org.opentutorials.javatutorials.progenitor;
 
class Student{
    String name;
    Student(String name){
        this.name = name;
    }
    public boolean equals(Object obj) {
        Student _obj = (Student)obj;
        return name == _obj.name;
    }
}
 
class ObjectDemo {
 
    public static void main(String[] args) {
        Student s1 = new Student("egoing");
        Student s2 = new Student("egoing");
        System.out.println(s1 == s2);
        System.out.println(s1.equals(s2));
 
    }
 
}

위 코드의 실행결과는 다음과 같다.

false
true

object는 student의 부모타입인데, 이걸 풀어서 설명하면
Object라는 데이터 타입에 obj라는 변수에 s2의 변수를 대입하려고 하는데, 그 s2의 데이터 타입이 student이다.

그러나 ojbect는 student가 가지고 있는 name라는 변수값에 접근할 수 없다. object라는 데이터 타입에는 name이라는 멤버가 없기 때문이다.

부모타입은 자식타입 행세를 할 수 없다!

따라서

System.out.println(s1 == s2); 에 대해서는 false가 나오고
System.out.println(s1.equals(s2)); 에 대해서는 true가 나오는 것이다.

s1, s2는 다른 데이터 타입이라서 같을 수 없지만
equals를 통해 overiding 하면 true가 될 수 있다.

profile
꿈을 이루는 사람

0개의 댓글