Mega Code Archive

 
Categories / C# / Data Types
 

Illustrates casting objects

/* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110 */ /*   Example7_11.cs illustrates casting objects */ using System; // declare the MotorVehicle class (the base class) class MotorVehicle {   public string model;   public MotorVehicle(string model)   {     this.model = model;   }   public void Start()   {     Console.WriteLine(model + " started");   } } // declare the Car class class Car : MotorVehicle {   public bool convertible;   public Car(string model, bool convertible) :   base(model)   {     this.convertible = convertible;   } } // declare the Motorcycle class class Motorcycle : MotorVehicle {   public bool sidecar;   // define a constructor   public Motorcycle(string model, bool sidecar) :   base(model)   {     this.sidecar = sidecar;   }   public void PullWheelie()   {     Console.WriteLine(model + " pulling a wheelie!");   } } public class Example7_11 {   public static void Main()   {     // create a Car object     Car myCar = new Car("MR2", true);     // cast myCar to MotorVehicle (upcast)     MotorVehicle myMotorVehicle = (MotorVehicle) myCar;     // myMotorVehicle only has a model field and Start() method     // (no convertible field)     Console.WriteLine("myMotorVehicle.model = " + myMotorVehicle.model);     myMotorVehicle.Start();     // Console.WriteLine("myMotorVehicle.convertible = " +     //   myMotorVehicle.convertible);     // create a Motorcycle object     Motorcycle myMotorcycle = new Motorcycle("V-Rod", true);     // cast myMotorcycle to MotorVehicle (upcast)     MotorVehicle myMotorVehicle2 = (MotorVehicle) myMotorcycle;     // myMotorVehicle only has a model field and Start() method     // (no sidecar field or PullWheelie() method)     Console.WriteLine("myMotorVehicle2.model = " + myMotorVehicle2.model);     myMotorVehicle2.Start();     // Console.WriteLine("myMotorVehicle2.sidecar = " +     //   myMotorVehicle2.sidecar);     // myMotorVehicle2.PullWheelie();     // cast myMotorVehicle2 to Motorcycle (downcast)     Motorcycle myMotorcycle2 = (Motorcycle) myMotorVehicle2;     // myMotorCycle2 has access to all members of the Motorcycle class     Console.WriteLine("myMotorcycle2.model = " + myMotorcycle2.model);     Console.WriteLine("myMotorcycle2.sidecar = " + myMotorcycle2.sidecar);     myMotorcycle2.Start();     myMotorcycle2.PullWheelie();     // cannot cast a Motorcyle object to the Car class because     // their classes are not compatible     // Car myCar2 = (Car) myMotorVehicle2;   } }