Я искал и не смог найти решение моей проблемы. Мой сценарий очень прост:base.Method() с несколькими уровнями наследования, которые не вызываются?
public class A
{
public virtual void MethodOne()
{
Console.log("A");
}
}
public class B : A
{
public override void MethodOne()
{
base.MethodOne();
Console.log("B");
}
}
public class C : B
{
public override void MethodOne()
{
base.MethodOne();
Console.log("C");
}
}
То, что я пытаюсь сделать, это экземпляр класса C (мы будем называть его «instanceC») называют как метод замещения своего родителя, и его прародитель. Так что я бы ожидать, что это:
instanceC.MethodOne();
// Output:
// "A"
// "B"
// "C"
Но вместо этого я получаю это:
instanceC.MethodOne();
// Output
// "A"
// "C"
с методом класса Б пропуску через. Разве это невозможно? Я думал, что это весь смысл наследования/полиморфизма. Заранее спасибо!
Вы уверены, что C является производным от B, а не A? – jure
Почему C ovveride от B? вы хотите, чтобы он наследовал от A. – Derek
Ваш пример работает так, как ожидалось для меня, и печатает «ABC» – Lee