Java/Java 올인원 패키지
16. 다운캐스팅과 instanceof (Java)
GrapeMilk
2020. 3. 17. 15:29
Goal
- 다운캐스팅에 대해 알아본다
- instanceof에 대해 알아본다
1. 다운캐스팅
- 묵시적으로 상위 클래스 형변환된 인스턴스가 원래 자료형(하위클래스)으로 변환되어야 할 때 다운캐스팅이라 함.
- 하위 클래스로의 형 변환은 명시적으로 되어야 함
Customer vc = new VIPCustomer(); //묵시적
VIPCustomer vCustomer = (VIPCustomer)vc; //명시적
2. instanceof
- 인스턴스가 다른 값을 다운캐스팅 할 때, 오류가 나는 것을 방지해줌
- instacneof는 둘 인스턴스를 비교하여 같은 값을 갖고 있으면 true를 다르면 false를 반환함.
- instanceof라는 안전장치를 만들어서 다형성과 다운캐스팅을 자유롭게 사용할 수 있음.
public void testDownCasting(ArrayList<Animal> list) {
for(int i = 0; i < list.size(); i++) {
Animal animal = list.get(i);
if (animal instanceof Human) {
Human human = (Human)animal;
human.make();
}
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("error");
}
}
}