упрощенный пример того, что я пытаюсь достичь, выглядит так:Override унаследованное свойство с более производный тип
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 содержит функцию укусить:
public void Bite()
{
teeth.bite()
Console.WriteLine("Ouch")
}
Я мог бы вызвать функцию Bite()
унаследованной от животных, и было бы использовать поле класса Mouse типа SmallTeeth
. Это возможно? и это лучший способ сделать то, что я пытаюсь сделать? Если нет, то какой будет правильный подход к этой проблеме?
@ gyttt1: Если я правильно помню, это как-то связано с концепциями ковариации. Вы можете переопределить обычный способ с помощью Teeth, и ваша реализация может вернуть объект типа SmallTeeth – pkamathk