Object 클래스

Moon·2024년 2월 24일

Java

목록 보기
16/45

모든 객체는 Object를 상속받음.
Object fruit = new Fruit("사과");

그래서 모든 객체는 Object의 메소드를 사용할 수 있음.
.hashCode(), .toString(), .equals()

class Fruit {
    private String name;

    Fruit(String name) {
        this.name = name;
    }


    String getName() {
        return name;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Fruit) {
            Fruit tempFruit = (Fruit) obj;
            return name.equals(tempFruit.name);
        } else {
            return false;
        }
    }

    @Override
    public String toString() {
        return "Fruit 이름:"+name;
    }

    @Override
    public int hashCode() {
        int salt = 7;
        return 31 * salt + name.hashCode();
    }
}
public class Main {

    public static void main(String[] args) {

        Fruit fruit1 = new Fruit("사과");
        Fruit fruit2 = new Fruit("사과");
        Fruit fruit3 = new Fruit("포도");
        
        Object o = new Object();
        Main obj = new Main();
        // System.out.println(obj.hashCode());
        // System.out.println(o.hashCode());

        // // TODO : toString 재정의
        // System.out.println(fruit1.toString());

        // TODO : 동일한 해시코드 (fruit1 == fruit2)
        System.out.println(fruit1.hashCode() == fruit2.hashCode()); //true

        // TODO : 동일하지 않은 해시코드 (fruit1 != fruit3)
        System.out.println(fruit1.hashCode() == fruit3.hashCode()); //false

        System.out.println(fruit1 == fruit2); //false

        // TODO : 동일한 객체 (fruit1 == fruit2)
        System.out.println(fruit1.equals(fruit2)); //true

        // TODO : 동일하지 않은 객체 (fruit1 != fruit3)
        System.out.println(fruit1.equals(fruit3)); //false

    }
}

0개의 댓글