/* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110 */ /* Example7_2.cs illustrates polymorphism */ using System; // declare the MotorVehicle class class MotorVehicle { // declare the fields public string make; public string model; // define a constructor public MotorVehicle(string make, string model) { this.make = make; this.model = model; } // define the Accelerate() method (may be overridden in a // derived class) public virtual void Accelerate() { Console.WriteLine(model + " accelerating"); } } // declare the Car class (derived from MotorVehicle) class Car : MotorVehicle { // define a constructor public Car(string make, string model) : base(make, model) { // do nothing } // override the base class Accelerate() method public override void Accelerate() { Console.WriteLine("Pushing gas pedal of " + model); base.Accelerate(); // calls the Accelerate() method in the base class } } // declare the Motorcycle class (derived from MotorVehicle) class Motorcycle : MotorVehicle { // define a constructor public Motorcycle(string make, string model) : base(make, model) { // do nothing } // override the base class Accelerate() method public override void Accelerate() { Console.WriteLine("Twisting throttle of " + model); base.Accelerate(); // calls the Accelerate() method in the base class } } public class Example7_2 { public static void Main() { // create a Car object and call the object's Accelerate() method Car myCar = new Car("Toyota", "MR2"); myCar.Accelerate(); // create a Motorcycle object and call the object's Accelerate() method Motorcycle myMotorcycle = new Motorcycle("Harley-Davidson", "V-Rod"); myMotorcycle.Accelerate(); } }