对于令人困惑的标题感到抱歉,我不知道如何用一句话来描述这个问题。我有一个有2个孩子的父类EmergencyWorker:
public abstract class EmergencyWorker
{
protected virtual Vehicle vehicle;
}
public class EMT : EmergencyWorker
{
protected override Ambulance vehicle;
}
public class Firefighter : EmergencyWorker
{
protected override FireTruck vehicle;
}
救护车和FireTruck都是车辆。 我想要它,以便属于EMT的每辆车都是救护车,而属于消防员的每辆车都是救火车。
虚拟和覆盖不起作用,因为我得到“修饰符'覆盖'对此项无效” 我对仿制药的经验不多,但我怀疑他们在这里可能会有所帮助。
那么如何强迫EmergencyWorker的孩子用车型的孩子覆盖车辆领域呢?
答案 0 :(得分:2)
您可以使用泛型类型参数。
public abstract class EmergencyWorker<T> where T : Vehicle
{
protected T vehicle;
}
public class EMT : EmergencyWorker<Ambulance>
{
}
public class Firefighter : EmergencyWorker<FireTruck>
{
}