我尝试实现的简化示例如下:
public class Animal
{
public virtual Teeth teeth {get;set;}
}
public class Mouse : Animal
{
public override SmallTeeth teeth {get; set;} // SmallTeeth Inherits from Teeth
}
显然,这样做是不起作用的,因为在Mouse类中覆盖的牙齿必须与Animal类中的牙齿类型相同。但是是否可以实现类似于此的内容,在从Animal继承的任何函数中允许使用更多派生的类型?例如,如果Animal类包含一个咬的函数:public void Bite()
{
teeth.bite()
Console.WriteLine("Ouch")
}
我可以调用从Animal继承来的Bite()
函数,它会使用Mouse类中类型为SmallTeeth
的字段。这是可能的吗?如果不是,那么正确的方法是什么?