illustrates casting objects

image_pdfimage_print

   
  
/*
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;

  }

}


           
         
    
     


This entry was posted in Data Types. Bookmark the permalink.