public class CatsAndDogs extends JApplet {
JTextArea Xout = new JTextArea(10, 30);
public void init() {
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
cp.add(new JLabel("CatsAndDogs"));
cp.add(new JScrollPane(Xout));
ArrayList cats = new ArrayList();
for(int i = 0; i < 7; i++)
cats.add(new Cat(i));
// Not a problem to add a dog to cats:
cats.add(new Dog(7));
Iterator e = cats.iterator();
while(e.hasNext())
try{
((Pet)e.next()).print();
// Dog is detected only at run-time
}catch (Exception ex) {
Xout.append("Class Cast Exception\n" );
ex.printStackTrace();
}
}
class Pet {
void print() {
}
}
class Cat extends Pet {
private int catNumber;
Cat(int i) {
catNumber = i;
}
void print() {
Xout.append("Cat number " +catNumber + "\n");
}
}
class Dog extends Pet{
private int dogNumber;
Dog(int i) {
dogNumber = i;
}
void print() {
Xout.append("Dog number " +dogNumber + "\n");
}
}
public static void main(String[] args) {
Console.run(new CatsAndDogs(), 350, 250);
}
} ///:~