internal abstract class Animal
{
public string name { get; set; }
public Animal(string name) {
this.name = name;
}
public abstract string MakeSound();
}
internal class Cat : Animal
{
public Cat(string name) : base(name) { }
public override string MakeSound()
{
return $"The cat named {name} went Meow!";
}
}
internal class Dog : Animal
{
public Dog(string name) : base(name) { }
public override string MakeSound()
{
return $"The dog named {name} went Woof!";
}
}
private void INHERITANCE_Click(object sender, EventArgs e)
{
List Animals = new List()
{
new Cat("Dave"),
new Dog("Billy")
};
foreach (Animal animal in Animals) {
Console.WriteLine(animal.MakeSound());
}
}
private void POLY_Click(object sender, EventArgs e)
{
//poly
Cat cat1 = new Cat("Dave");
Dog dog1 = new Dog("Billy");
cat1.name = "frank";
List Animals = new List();
Animals.Add(cat1);
Animals.Add(dog1);
foreach (Animal animal in Animals)
{
Console.WriteLine(animal.MakeSound());
}
}