using System.Collections.Generic;
public static void Main()
List<Animal> myFavouriteAnimals = new List<Animal>();
myFavouriteAnimals.Add(new Animal { Name = "Worm", Eyes = 0 });
myFavouriteAnimals.Add(new Bird { Name = "Hawk", CanFly = true });
myFavouriteAnimals.Add(new Bird { Name = "Penguin", CanFly = false });
myFavouriteAnimals.Add(new Fish { Name = "Eel", CanSwimBackwards = true });
myFavouriteAnimals.Add(new Fish { Name = "Shark", CanSwimBackwards = false });
foreach(var animal in myFavouriteAnimals)
Console.WriteLine(animal.ToString());
public string Name { get; set; }
public virtual int Eyes { get; set; }
public override string ToString()
return String.Format("{0} - Eyes:{1}", Name, Eyes);
public class Vertebrates : Animal
public override sealed int Eyes { get { return 2; } set{} }
public class Bird : Vertebrates
public bool CanFly { get;set; }
public override string ToString()
return String.Format("{0}, CanFly: {1}", base.ToString(), CanFly);
public class Fish : Vertebrates
public bool CanSwimBackwards { get;set; }
public override string ToString()
return String.Format("{0}, CanSwimBackwards: {1}", base.ToString(), CanSwimBackwards);