假设我有一个典型的层次结构:
我想要的是为每个类都有一个特定的move()实现。如果我有下一个代码:
List<Vehicle> vehicles = GetVehicles();
foreach (Vehicle v in vehicles)
{
v.move();
}
必须根据运行时的v类
对相应的move()实现进行调用我尝试使用虚拟和覆盖但是如果我在RedCar实例中调用move(),它会跳转到Car.move()(我猜这是因为是Vehicle下的下一个覆盖)
任何线索怎么办?
答案 0 :(得分: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();
}
}
}