# 인터페이스와 ArrayList 우리는 앞서 인터페이스 타입으로 업캐스팅이 가능함을 배웠습니다. ![클라우드스터딩-자바-업캐스팅-인터페이스-그룹화](https://i.imgur.com/v9GFJbv.png) 따라서 다양한 하위 객체들을 상위 인터페이스 타입으로 ArrayList에 저장 가능합니다. ``` // Flyable 타입을 저장할 ArrayList 생성 ArrayList<Flyable> list = new ArrayList<Flyable>(); // 인터페이스를 통한 다양한 하위 객체들을 저장 list.add(new Bird()); list.add(new Helicopter()); list.add(new Rocket()); ``` ## 문제 CS 백화점에서는 썸머 페스티벌로 인해, 아래와 같은 할인을 진행 중이다. #### 할인 품목 - 음식: 10% - 전자기기: 20% - 의류: 30% 홍팍이는 이때다 싶어, 족발(정가-19,800원)과 에어팟(정가-199,000원) 그리고 셔츠(정가-49,900원)를 구매하였다. 홍팍이의 쇼핑 총액에 할인율이 적용되도록 주어진 코드를 완성하여, 출력 예와 같은 결과를 얻으시오. ## 출력 예 ``` 총합: 211950원 ```
관련 강의로 이동

코드: java 1.8

import java.util.ArrayList; public class InterfaceType { public static void main(String[] args) { // 다양한 타입의 객체 생성 Food jokbal = new Food("족발", 19800); Electronics airpod = new Electronics("에어팟", 199000); Clothing shirt = new Clothing("셔츠", 49900); // Orderable 타입을 담을 ArrayList 생성 ArrayList<Orderable> list = new ArrayList<Orderable>(); // Orderable 타입으로 해석 가능한, 객체들을 담기 list.add(jokbal); list.add(airpod); list.add(shirt); // 총합 계산 int sum = 0; for (int i = 0; i < list.size(); i++) { Orderable temp = list.get(i); sum += temp.discountedPrice(); } // 결과 출력 System.out.printf("총합: %d원\n", sum); } } interface Orderable { public int discountedPrice(); } class Food implements Orderable { private String name; private int price; public Food(String name, int price) { this.name = name; this.price = price; } /* 1. 오버라이딩을 통해, 음식 할인율을 적용하세요. */ public int discountedPrice() { return price; } } class Electronics implements Orderable { private String name; private int price; public Electronics(String name, int price) { this.name = name; this.price = price; } /* 2. 오버라이딩을 통해, 전자기기 할인율을 적용하세요. */ public int discountedPrice() { return price; } } class Clothing implements Orderable { private String name; private int price; public Clothing(String name, int price) { this.name = name; this.price = price; } /* 3. 오버라이딩을 통해, 의류 할인율을 적용하세요. */ public int discountedPrice() { return price; } }

입력

정답이 궁금하다면? 코드를 제출해보세요!