-
[JAVA] 다운캐스팅카테고리 없음 2021. 5. 6. 12:18
Buyer 클래스가 Customer클래스를 상속받은 경우
Customer customer = new Buyer();
위 경우 업캐스팅이라 했었고, 형변환 (Customer)을 해주지 않아도 생략이 가능하다.
반대의 경우에는 어떨까
Buyer buyer = new Customer();
위 경우에는 성립이 되지 않는다.
Buyer클래스는 Customer클래스를 상속받았기 때문에 Customer클래스보다는 Buyer클래스가 더 많은 내용을 갖고 있다.
buyer 변수가 원하는 정보는 Buyer클래스의 정보를 모두 원하는데, Customer 인스턴스(new Customer(); )
는 Customer 정보만 갖고 있을뿐, Buyer의 정보를 갖고있지 않다.
따라서 컴파일 오류가 생긴다.
형변환을 시켜주면 어떻게 될까?
Buyer buyer = (Buyer) new Customer();
코드오류는 없지만 컴파일 오류가 발생한다.
즉, Buyer 데이터에 Customer 데이터를 넣어주는 경우를 다운캐스팅이라한다.
Customer customer = new Buyer();
Buyer buyer = (Buyer)customer;
customer변수는 Customer클래스 형태의 변수이지만,
태생이 Buyer 인스턴스인 데이터를 넣어주었다.
그러한 정보를 가지고 있는 customer변수를 다시 Buyer클래스 형태로 다운캐스팅을 했다.