Ceci est lié à C#, mais en fait la question est assez générique.Comment forcer une classe dérivée à remplir une liste définie dans la classe de base?
Disons que j'ai une classe de base
abstract class Base {
protected List<string> MyList = new List<string>();
protected abstract void FillMyList();
}
class Derived : Base {
protected void FillMyList() {
MyList.Add("test");
MyList.Add("test2");
}
}
Ceci est ok, la classe dérivée remplit la MyList définie dans la classe de base. Cependant, en plus du nom de la méthode abstraite (FillMyList) - qui indique que vous devez réellement remplir MyList - il n'y a aucune idée de ce que cette méthode est censée signifier.
Existe-t-il une meilleure façon d'appliquer ou (mieux) de suggérer fortement que vous devrez remplir MyList lorsque vous héritez de Base? Peut-être avoir le FillMyList déclaré:
protected abstract void FillMyList(List<string> listToFill);
Que proposez-vous?
La méthode abstraite et la propriété donnent tous les deux le même effet, c'est-à-dire "doit l'implémenter" – TalentTuner
Salut Nagg, ça fait l'affaire. Merci. @saurabh: true, mais cela oblige le Dérivé à faire quelque chose et à retourner la liste (même vide). – sh0uzama