using System.Collections.Generic;
static void Main(string[] args)
List<Animal> walkingAnimals = new List<Animal>();
walkingAnimals.Add(new Bird());
walkingAnimals.Add(new Cat());
foreach (var walkingAnimal in walkingAnimals)
MakeMeWalk(walkingAnimal);
private static void MakeMeWalk(Animal walkingAnimal)
public abstract class Animal
public abstract void Eat();
public abstract void Breath();
public abstract void Walk();
public interface IWalkable
Console.WriteLine("I'm walking");
public interface IFlyable
public class Cat : Animal
public override void Eat()
Console.WriteLine("I'm eating");
public override void Walk()
Console.WriteLine("I'm a cat and I'm walking");
public override void Breath()
Console.WriteLine("I'm breating! (overrided)");
public class Bird : Animal
public override void Eat()
Console.WriteLine("I'm eating");
public override void Walk()
Console.WriteLine("I'm a bird and I'm walking");
public override void Breath()
Console.WriteLine("I'm breating! (overrided)");