//using Arraylist allow us to use for loop to call the //functions having the same name in super class and sub class import java.util.ArrayList; import java.util.Scanner; public class ManyDrinks_ArrayList { public static void main(String[] args) { // TODO Auto-generated method stub double total = 0; double dinnerTotal = 0; int i = 0; int totalDrinks = 0; ArrayList drinks = new ArrayList<>(); Drink myDrink1 = new Coffee("Small",1,"Espresso"); drinks.add(myDrink1); Drink myDrink2 = new Coffee("Middle",1,"Venti"); drinks.add(myDrink2); Drink myDrink3 = new Beer("Large",1,4.2); drinks.add(myDrink3); Drink myDrink4 = new Beer("Small",1,8.6); drinks.add(myDrink4); for(Drink drink:drinks) { System.out.println("Drink number : " + (++i)); drink.print(); drink.order(); System.out.println(); totalDrinks += drink.getNumDrinks(); dinnerTotal += caculateTotal(drink.getNumDrinks(),drink.price()); } Scanner input = new Scanner(System.in); System.out.print("Is this lunch time (Yes/No):"); if(input.next().equalsIgnoreCase("Yes")) { total = caculateTotal(totalDrinks); } else { total = dinnerTotal; } input.close(); System.out.printf("Your total is $%.2f", total); } //method overloading, for lunch time, $3 for each drink. For dinner, the price is set in coffee class and beer class based on your options static double caculateTotal(int myNumDrinks) { return myNumDrinks * 3.0; } static double caculateTotal(int myNumDrinks, double myPrice) { return myNumDrinks * myPrice; } }