instanceof 연산자
- 참조변수의 형변환 가능여부 확인에 사용 가능하면 true 반환
- 형변환 하기 전에는 반드시 intanceof로 확인해야 한다.
형변환을 할려면 instanceof를 사용해서 확인을 해야한다. 근데 왜 참조변수의 형변환을 왜 하는걸까?
참조변수를 변경함으로써 사용할 수 있는 멤버의 갯수를 조절 할 수 있기 때문이다.
하위타입에서 상위타입으로 형변환 하는 업캐스팅과 상위타입에서 하위 타입으로 다운캐스팅 하는 방법을 알아보자
업캐스팅 구현 방법
상위클래스인 Animal과 하위 클래스인 Human이 있다.
class Animal{
public void move() {
System.out.println("동물이 움직입니다.");
}
}
class Human extends Animal {
@Override
public void move() {
System.out.println("사람이 두 발로 걷습니다.");
}
public void readBook() {
System.out.println("사람이 책을 읽습니다.");
}
}
하위타입인 상위타입 형 변환 여부를 확인 하고 상위타입으로 형변환
// 객체 생성
Human hTest = new Human();
// 형 변환 여부 확인
System.out.println("업케스팅 여부 : " + (hTest instanceof Animal));
if(hTest instanceof Animal) { // true 일시
// 상위타입으로 형 변환
Animal aTest = (Animal) hTest;
}
다운캐스팅 구현 방법
상위클래스와 하위클래스는 위에 업캐스팅 처럼 구현
상위타입을 하위 타입으로 형변환
// 상위타입 참조변수 선언
Animal aTest = new Human();
System.out.println("다운케스팅 여부 : " + (aTest instanceof Human));
if(aTest instanceof Human) { // true 일 경우
// 하위타입으로 형변환
Human hTest = (Human) aTest;
}
참조 :
- https://www.youtube.com/watch?v=YvCgrZQU4EM&list=PLW2UjW795-f5JPTsYHGAawAck9cQRw5TD&index=33
- 패스트캠퍼스
'JAVA' 카테고리의 다른 글
| [JAVA] 추상 클래스의 응용 - 템플릿 메서드 패턴 (0) | 2023.07.30 |
|---|---|
| [JAVA] 추상 클래스의 의미와 구현하는 방법 (0) | 2023.07.30 |
| [JAVA] 다형성과 다형성을 사용하는 이유 (2) | 2023.07.26 |
| [JAVA] 메서드 재정의 하기 (2) | 2023.07.16 |
| [JAVA] 상속에서 클래스 생성 과정과 형 변환 (1) | 2023.07.16 |