using System; namespace Example58 { abstract class Animal { private string name; public Animal(string name) { this.name = name; } public abstract string Speak(); public string Name { get { return name; } } } class Dog : Animal { public Dog(string name) : base(name) { } public override string Speak() { return "Woof, woof"; } public override string ToString() { return Name; } } class Cat : Animal { public Cat(string name) : base(name) { } public override string ToString() { return Name; } public override string Speak() { return "Meow, meow"; } } /// /// Summary description for Class1. /// class Class1 { /// /// The main entry point for the application. /// [STAThread] static void Main(string[] args) { Animal spot = new Dog("Spot"); Animal puff = new Cat("Puff"); Console.WriteLine(spot + " " + spot.Speak()); Console.WriteLine(puff + " " + puff.Speak()); } } }