using System.Collections;
public abstract class Animal
name = "The animal with no name";
public Animal(string newName)
Console.WriteLine( name + "has been fed.");
public class Cow : Animal
Console.WriteLine(name + "{name} has been milked.");
public Cow(string newName) : base(newName) {}
public class Chicken : Animal
Console.WriteLine(name+ "{name} has laid an egg.");
public Chicken(string newName) : base(newName) {}
public static void Main()
Console.WriteLine("Create an Array type collection of Animal " +
Animal[] animalArray = new Animal[2];
Cow myCow1 = new Cow("Lea");
animalArray[1] = new Chicken("Noa");
foreach (Animal myAnimal in animalArray)
Console.WriteLine("New {" + myAnimal.ToString()+ "} object added to Array collection, Name = {+"+myAnimal.Name+"}");
Console.WriteLine("Array collection contains {"+animalArray.Length+"} objects.");
((Chicken)animalArray[1]).LayEgg();
Console.WriteLine("Create an ArrayList type collection of Animal " +
ArrayList animalArrayList = new ArrayList();
Cow myCow2 = new Cow("Rual");
animalArrayList.Add(myCow2);
animalArrayList.Add(new Chicken("Andrea"));
foreach (Animal myAnimal in animalArrayList)
Console.WriteLine("New {"+myAnimal.ToString()+"} object added to ArrayList collection," +
" Name = {"+myAnimal.Name+"}");
Console.WriteLine("ArrayList collection contains {"+animalArrayList.Count+"} "
((Animal)animalArrayList[0]).Feed();
((Chicken)animalArrayList[1]).LayEgg();
Console.WriteLine("Additional manipulation of ArrayList:");
animalArrayList.RemoveAt(0);
((Animal)animalArrayList[0]).Feed();
animalArrayList.AddRange(animalArray);
((Chicken)animalArrayList[2]).LayEgg();
Console.WriteLine("The animal called {"+myCow1.Name+"} is at " +
"index {"+animalArrayList.IndexOf(myCow1)+"}.");
Console.WriteLine("The animal is now " +
"called {"+((Animal)animalArrayList[1]).Name+"}.");