public static void Main(string[] args)
protected int _generation = 0;
public Animal() : this(1)
public Animal(int generation)
public virtual Animal Spawn()
System.Console.WriteLine("From Animal Spawn");
return new Animal(_generation + 1);
public Dog(int generation)
_generation = generation;
public override Animal Spawn()
System.Console.WriteLine("From Dog Spawn");
return new Dog(_generation + 1);