using System;
using System.Collections.Generic;
namespace AnimalSimulator
{
// Abstract base class
public abstract class Animal
{
public string Name { get; set; }
public Animal(string name)
{
Name = name;
}
public abstract void MakeSound();
}
public class Dog : Animal
{
public Dog(string name) : base(name) { }
public override void MakeSound()
{
Console.WriteLine($"{Name} says: Woof!");
}
}
public class Cat : Animal
{
public Cat(string name) : base(name) { }
public override void MakeSound()
{
Console.WriteLine($"{Name} says: Meow!");
}
}
public class Cow : Animal
{
public Cow(string name) : base(name) { }
public override void MakeSound()
{
Console.WriteLine($"{Name} says: Moo!");
}
}
class Program
{
static void Main(string[] args)
{
List animals = new List
{
new Dog("Buddy"),
new Cat("Whiskers"),
new Cow("Bessie")
};
foreach (Animal animal in animals)
{
animal.MakeSound();
}
}
}
}