티스토리 뷰

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");
            }
	        
	    }
	 
	}

'Java > Java 올인원 패키지' 카테고리의 다른 글

18. 템플릿 메서드 (Java)  (0) 2020.03.17
17. 추상 클래스, 템플릿 메서드 (Java)  (0) 2020.03.17
14. 메서드 오버라이딩 (Java)  (0) 2020.03.17
13. 상속 (Java)  (0) 2020.03.16
12. ArrayList (Java)  (0) 2020.03.16
댓글