객체를 비교할때, 본질적으로 두개가 같니? 라고 물을 수 없음. 두개의 객체가 같은 주소야?
라고 물어보면 안됨. 다른 객체의 것 이기 때문에 다른 주소를 가짐
p1==c1 XXX에러
연산자의 대상이 객체가 될수 없음!!
/*
최상위 클래스 Object로부터 상속받은 메서드인 equals()를
살짝 바꿔서 사용하고싶음!
-> 오버라이딩 (메서드시그니처가같아야해 : 인자개수 같아야함 순서 같아야함 걍 고정) 메서드 재정의
void func(double d) { //int 10이 인자로 설정됨
d=10.0;
//그냥 10이 필요함
int i=(int)d; //형변환(타입캐스팅)
double d=3; //3.0
자동 형변환
업캐스팅
}
*/
@Override // @어노테이션 : 프로그램이 인지하는 주석
public boolean equals(Object obj) {
//타입캐스팅
Pokemon pokemon = (Pokemon)obj; //명시적형변환 // 다운캐스팅
// ==>> (p1.equals(p2)) 이제 쌉가능
//내 이름이랑 비교할 대상의 이름이랑 같아?
if(this.name.equals(pokemon.name)) { //obj.name 오브젝트는 name을 같고있지 않음
return true;
}
return false;
}