Я столкнулся с проблемой, ставя под сомнение мою веру в ООП. Пожалуйста, дайте мне знать, как, если это возможно:
У меня есть родительский класс со Статическим списком (для отслеживания всех созданных объектов, главным образом по причинам UI DataGrid) и метод, ссылающийся на этот список. Нечто подобное
abstract class Animal
{
public static List<Animal> objList;
public String Name;
public Animal(String Name)
{
this.Name = Name;
objList.Add(this);
}
public virtual void delete(int i)
{
objList.RemoveAt(i);
}
теперь у меня есть дочерний класс со статическим списком (то же имя, то же назначение, только другой класс), но для того, чтобы метод ссылался на child.list, я должен переписать метод. вот так
class Cat : Animal
{
public static List<Cat> objList;
public Cat(String Name) : base(Name)
{
}
//whould it be possible to ommit this method?
public override void delete(int i)
{
objList.RemoveAt(i);
}
}
Это не может быть лучшим способом. Если бы у меня было 5 детей, все они вставили бы одну и ту же часть кода.
Должен быть способ, которым метод родительского класса «delete», если вызывается из дочернего объекта, удаляет его из дочернего списка, а не из родительского списка.