스크린샷 2025-08-12 오후 12.13.05.png

⇒ 부모 클래스의 메소드가 실행 ( 모든클래스는 Object클래스를 상속받는다. )

스크린샷 2025-08-12 오후 12.17.34.png

메모리가 다르다 ⇒ 동일 비교

개념적으로 다르다 ⇒ 동등 비교 → 부모클래스인 Object의 equals() 오버라이딩 해서 사용

스크린샷 2025-08-12 오후 12.22.10.png

⇒ Object클래스의 equals 메소드 ( 원래 동일비교 )

스크린샷 2025-08-12 오후 12.28.41.png

→ Object에서 o를 다운캐스팅 ( Object는 부모 )

public boolean equals(Object o)


예시:

Animal a1 = new Rabbit();   // 업캐스팅 (자식 → 부모) : 항상 가능
Rabbit r1 = (Rabbit) a1;    // 다운캐스팅 : OK (실제 객체가 Rabbit이라 안전)

Animal a2 = new Animal();   // 부모 객체
Rabbit r2 = (Rabbit) a2;    // 다운캐스팅 : 런타임 오류(ClassCastException)