Когда вы хотите, чтобы метод родителя запускался так же, как и дочерний
например: ребенок 1 будет иметь A, B и C в своем списке, так как он вызывает метод родителя, но ребенок 2 будет иметь только X, Y Z.
public class Parent
{
protected IList<string> Names {get;set;}
public virtual void Addnames()
{
Names = new List<string>(){"A", "B"};
}
}
public class Child1 : Parent
{
public override void Addnames()
{
base.Addnames();
Names.Add("C");
}
}
public class Child2 : Parent
{
public override void Addnames()
{
Names = new List<string>(){"X", "Y", "Z"};
}
}
Обычно вы делаете это, когда хотите, чтобы базовый класс выполнял общие функции, а дочерний класс добавляет к этому. Надеюсь, это поможет