//: c11:CatsAndDogs.java // From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 200 // Available at http://www.BruceEckel.com // Simple collection with Iterator import java.util.*; class Pet { void print() { System.out.println("Pet Defualt Print"); } } class Cat extends Pet{ private int catNumber; Cat (int i) { catNumber = i; } void print() { System.out.println("Cat number " + catNumber); } } class Dog extends Pet{ private int dogNumber; Dog (int i) { dogNumber = i; } void print() { System.out.println("Dog number " + dogNumber); } } public class CatsAndDogs { public static void main (String[] args) { ArrayList cats = new ArrayList(); for (int i = 0; i < 7; i++) { cats.add (new Cat (i)); cats.add(new Dog (i)); } Iterator e = cats.iterator(); while (e.hasNext()) ((Pet)e.next()).print(); // Cat and Dog are detected only at run-time } }