ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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클래스 형태로 다운캐스팅을 했다.

     

     

     

     

    댓글

Designed by Tistory.