// version 1.0.6 interface Eatable { fun eat() } class Cheese(val name: String) : Eatable { override fun eat() { println("Eating $name") } override fun toString() = name } class Meat(val name: String) : Eatable { override fun eat() { println("Eating $name") } override fun toString() = name } class FoodBox { private val foodList = mutableListOf() fun add(food: T) { foodList.add(food) } override fun toString() = foodList.toString() } fun main(args: Array) { val cheddar = Cheese("cheddar") val feta = Cheese("feta") val cheeseBox = FoodBox() cheeseBox.add(cheddar) cheeseBox.add(feta) println("CheeseBox contains : $cheeseBox") val beef = Meat("beef") val ham = Meat("ham") val meatBox = FoodBox() meatBox.add(beef) meatBox.add(ham) println("MeatBox contains : $meatBox") cheddar.eat() beef.eat() println("Full now!") }