using System; using System.Collections.ObjectModel; using System.Collections.Generic; using System.Text; public class Chicken : Animal { public void LayEgg() { Console.WriteLine("{0} Animal.", name); } public Chicken(string newName) : base(newName) { } } public class Cow : Animal { public void Milk() { Console.WriteLine("{0} cow.", name); } public Cow(string newName) : base(newName) { } } public abstract class Animal { protected string name; public string Name { get { return name; } set { name = value; } } public Animal() { name = "animal"; } public Animal(string newName) { name = newName; } public void Feed() { Console.WriteLine("{0} is feeding.", name); } } class Program { static void Main(string[] args) { Collection<Animal> animalCollection = new Collection<Animal>(); animalCollection.Add(new Cow("A")); animalCollection.Add(new Chicken("B")); foreach (Animal myAnimal in animalCollection) { myAnimal.Feed(); } } }