Search code examples
c#inheritancesubclassabstractsuperclass

how to make an instance of a subclass of type base class C#


I've created an abstract class called Vehicle and have 2 sub classes: Motorcycle and Automobile. How can I create an instance of Motorcycle by using type Vehicle? So something like this:

Vehicle m=new Motorcycle();

I am able to access all properties of the Vehicle class but it is not seeing the properties of the Motorcycle class. Thanks


Solution

  • When an instance of Motorcycle is seen as as Vehicle, then it, quite naturally, cannot give you access to Motorcycle's unique properties. That's the point of inheritance.

    To access them, you have to type-cast the instance:

    Vehicle v = new Motorcycle();
    ((Motorcycle)v).MotorbikeEngineVolume = 250;
    

    When you cannot be sure the instance truly is a Motorcycle, use the is operator:

    Vehile v = …
    …
    if (v is Motorcycle) 
    {
        ((Motorcycle)v).MotorbikeEngineVolume = 250;
    }