업캐스팅

작성일

업캐스팅

  • 자식 객체를 부모타입으로 해석하는 것

상속받을때

//고양이 객체 생성
Cat cat = new Cat();

//업캐스팅 - 고양이는 동물이다(o)
Animal a = cat;

implements때

  • 인터페이스를 구현하는 객체는 인터페이스 타입으로 업캐스팅 될 수 있다.
  • 전혀 다른 객체들일지라도 같은 인터페이스를 구현하였다면, 업캐스팅을 통해 그룹화가 가능하다.
//Flyable 인터페이스의 하위 객체 생성
Flyable b = new Bird();
Flyable h = new Helicopter();
Flyable r = new Rocket();

//인터페이스 타입 배열을 통한 객체 저장
Flyable[] arr = {b, h, r};

업캐스팅의 예시

Orderable f = new Food("족빌", 16000);
Orderable e = new Electronics("에어팟", 199000);
Orderable c = new Clothing("셔츠", 47000);

ArrayList<Orderable> list = new ArrayList<Orderable>();
list.add(f);
list.add(e);
list.add(c);

//총합 계산
int sum = 0;
for (int i = 0; i < list.size(); i++) {
  Orderable o = list.get(i);
  sum += o.discountedprice();
}

결과 출력
System.out.printf("총합: %d원", sum);

이렇게 업캐스팅을 활용하여 Orderable이란 인터페이스로 생성자를 묶어서,
객체를 만들수 있고, 또 이를 통해서 ArrayList를 만들어 활용할 수 있다.