Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法强制转换类型为';多态性。车辆';输入';车_C# - Fatal编程技术网

C# 无法强制转换类型为';多态性。车辆';输入';车

C# 无法强制转换类型为';多态性。车辆';输入';车,c#,C#,这是我的类彼此继承,现在我尝试调用派生类方法。我们都知道,polymorhpism允许您在运行时通过基类引用变量调用派生类方法。但我在这里做的改动很少,我通过使用父类引用变量和父类对象通过强制转换来调用它 public class vehicles { public string name = "genreal"; public string category = "general"; public virtual void type() { C

这是我的类彼此继承,现在我尝试调用派生类方法。我们都知道,polymorhpism允许您在运行时通过基类引用变量调用派生类方法。但我在这里做的改动很少,我通过使用父类引用变量和父类对象通过强制转换来调用它

public class vehicles
{
    public string name = "genreal";
    public string category = "general"; 
    public virtual void type()
    {
        Console.WriteLine(" my name is " + name + " my category is " + category + " I am from Vehicles class");
    }
}

public class bike : vehicles
{
    public override void type()
    {
        name = "Honda";
        category = "Bike";
        Console.WriteLine("my name is " + name + " my category is " + category + " I am from Bike class");
    }
}

public class Car : vehicles
{
    public override void type()
    {
        name = "Suzuki";
        category = "Car";
        Console.WriteLine(" my name is " + name + " my category is " + category + " I am from car class");
    }
}
这导致异常
无法将“polymorphics.vehicles”类型的对象强制转换为“polymorphics.Car”类型


是因为我们不能将父类对象强制转换为子类吗?我不确定,请指导我

您不能从父类中强制转换子类。 您需要将var创建为
Car
,从那里您可以访问
Car
方法

vehicles V = new vehicles();
((Car)V).type();
Console.ReadLine();

从那里您可以访问父属性和子属性。

正确。不能将父类强制转换为子类(除非具体类实际上是派生类型)
Car c = new Car();
c.type();