Dies ist C# verwandt, aber eigentlich ist die Frage ziemlich generisch.Wie erzwinge eine abgeleitete Klasse, um eine in der Basisklasse definierte Liste zu füllen?
Nehmen wir an, ich habe eine Basisklasse
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");
}
}
Das ist in Ordnung, die abgeleitete Klasse die MyList in der Basisklasse definiert füllt.
Neben dem Namen der abstrakten Methode (FillMyList) - der darauf hinweist, dass Sie tatsächlich MyList füllen müssen - gibt es keine Hinweise darauf, was diese Methode bedeuten soll.
Gibt es eine bessere Möglichkeit zu erzwingen oder (besser) stark darauf hinzuweisen, dass Sie MyList füllen müssen, wenn Sie von Base erben? Vielleicht ist der FillMyList mit erklärt wie:
protected abstract void FillMyList(List<string> listToFill);
Was schlagen Sie vor?
Abstrakte Methode und Eigenschaft beide gibt den gleichen Effekt, d. H. "Hat es zu implementieren" – TalentTuner
Hallo Nagg, das macht den Trick. Vielen Dank. @saurabh: true, aber dies zwingt das Abgeleitete etwas zu tun und gibt die Liste tatsächlich zurück (selbst wenn es leer ist). – sh0uzama