-1

假设我有一个像这样的典型层次结构:

在此处输入图像描述

我想要的是为每个类都有一个特定的 move() 实现。所以如果我有下一个代码:

List<Vehicle> vehicles = GetVehicles();
foreach (Vehicle v in vehicles) 
{
    v.move(); 
}

根据运行时 v 的类,必须对相应的 move() 实现进行调用

我尝试使用 virtual 和 override 但如果我在 RedCar 实例中调用 move() ,它会跳转到 Car.move() (我猜这是因为是 Vehicle 下的下一个覆盖)

任何线索怎么做?

4

1 回答 1

2

这是一个有效的示例代码。我有这个代码方便所以想发布它。

public class Vehicle
{
    public virtual void Move()
    {
        Console.WriteLine("Vehicle Moving");
    }
}
public class Car : Vehicle
{
    public override void Move()
    {
        Console.WriteLine("Car Moving");
    }
}

public class RedCar : Vehicle
{
    public override void Move()
    {
        Console.WriteLine("Red car Moving");
    }
}

class Program
{

    static void Main(string[] args)
    {
        var vehicles = new List<Vehicle>
            {
                new RedCar(), new Car(),new Vehicle()
            };
        foreach (var vehicle in vehicles)
        {
            vehicle.Move();
        }
    }
}
于 2013-08-10T00:31:20.423 回答