import java.util.ArrayList;
public class KennelDriver
{
public static void main( String[] args )
{
ArrayList<Pet> animals = new ArrayList<Pet>();
animals.add( new Dog( "Butch" ) );
animals.add( new Cat( "Morris" ) );
animals.add( new LoudDog( "Tiny" ) );
animals.add( new Dog( "Fido" ) );
animals.add( new Cat( "Sylvester" ) );
Kennel k1 = new Kennel( animals );
k1.allSpeak();
}
} // end class KennelDriver
***********************************************************************
import java.util.ArrayList;
public class Kennel
{
private ArrayList<Pet> myPets;
public Kennel( ArrayList<Pet> p )
{
myPets = new ArrayList<Pet>( p );
}
public void allSpeak()
{
for( Pet p : myPets )
{
System.out.println( p.speak() );
} // end for
} // end method allSpeak
} // end class Kennel
***********************************************************************
public abstract class Pet
{
private String myName;
public Pet( String name )
{
myName = new String(name);
}
public String getName()
{
return myName;
}
public String toString()
{
return myName;
} // end method toString
public abstract String speak();
} // end class Pet
***********************************************************************
public class Cat extends Pet
{
public Cat ( String name )
{
super( name );
}
public String speak()
{
return "meow";
}
} // end class Cat
***********************************************************************
public class Dog extends Pet
{
public Dog( String name )
{
super( name );
}
public String speak()
{
return "ruff";
}
} // end class Dog
***********************************************************************
public class LoudDog extends Dog
{
public LoudDog( String name )
{
super( name );
} // end constructor LoudDog
public String speak()
{
return super.speak() + super.speak();
}
}