클래스 다운케스팅 [명시적 형변환]

stan·2023년 5월 25일
0

Java 개념

목록 보기
28/33

객체를 비교할때, 본질적으로 두개가 같니? 라고 물을 수 없음. 두개의 객체가 같은 주소야?
라고 물어보면 안됨. 다른 객체의 것 이기 때문에 다른 주소를 가짐

p1==c1 XXX에러
연산자의 대상이 객체가 될수 없음!!

equals()메서드는 두개의 객체가 같은주소 일때만 True가 뜬다. equals는 주소를 봄

/*
	 최상위 클래스 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; 
	}
profile
이진 입니다

0개의 댓글

관련 채용 정보