如何创建基类C类型的子类的实例

时间:2016-11-25 16:32:21

标签: c# inheritance subclass abstract superclass

我创建了一个名为Vehicle的抽象类,它有2个子类:摩托车和汽车。 如何使用类型Vehicle创建摩托车实例? 所以像这样:

Vehicle m=new Motorcycle();

我能够访问Vehicle类的所有属性,但它没有看到Motorcycle类的属性。 感谢

2 个答案:

答案 0 :(得分:2)

Motorcycle的实例被视为Vehicle时,它很自然地无法让您访问Motorcycle&#39独特的属性。这是继承的重点。

要访问它们,您必须type-cast the instance

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

如果您无法确定该实例是Motorcycle,请使用is operator

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

答案 1 :(得分:0)

通过编写上述声明,您将只能访问摩托车的那些成员,这些成员要么继承自车辆,要么在摩托车中被覆盖,但如果您想要访问那些不属于车辆的摩托车成员那么您必须写: 摩托车m =新摩托车(); 通过使用此实例,您将能够访问派生类的成员。 谢谢!