다운 캐스팅(downcasting)
- 업캐스팅된 클래스를 다시 원래의 타입으로 형 변환
- 하위 클래스로의 형 변환은 명시적으로 해야 함
Customer vc = new VIPCustomer(); //묵시적
VIPCustomer vCustomer = (VIPCustomer)vc; //명시적
instanceof를 이용하여 인스턴스의 형 체크
- 원래 인스턴스의 형이 맞는지 여부를 체크하는 키워드 맞으면 true 아니면 false를 반환 함
AnimalTest.java
// DownCasting ===============================================
public void testDownCasting(ArrayList<Animal> list) {
for (int i = 0; i<list.size(); i++)
{
// for문을 돌면서 animal 변수에 매개변수로 들어온 list 의 i번째 인덱스가 저장
Animal animal = list.get(i);
// 만약 animal 객체의 인스턴스가 Human이라면
if( animal instanceof Human)
{
Human human = (Human)animal; //명시적으로 downcasting
human.readBook();
}
else if (animal instanceof Tiger)
{
Tiger tiger = (Tiger)animal;
tiger.hunting();
}
else if(animal instanceof Eagle) {
Eagle eagle = (Eagle)animal;
eagle.flying();
}
else {
System.out.println("unsupported type");
}
}
}
'개발공부 > 객체 지향 핵심' 카테고리의 다른 글
[Java] 10. 추상 클래스의 응용 - 템플릿 메서드 패턴 (0) | 2022.02.02 |
---|---|
[Java] 09. 추상 클래스(abstract class) 구현하기 (0) | 2022.02.02 |
[Java] 07. 상속은 언제 사용할까? (0) | 2022.02.01 |
[Java] 06. 다형성과 다형성을 사용하는 이유 (0) | 2022.02.01 |
[Java] 05. 메서드 재정의와 가상 메서드 원리 (0) | 2022.02.01 |