これはC#関連ですが、実際問題はかなり一般的です。派生クラスを強制的に基底クラスで定義されたリストに埋め込む方法はありますか?
のは、私が
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");
}
}
これはokですが、派生クラスは、基本クラスで定義されてマイリストを満たす基本クラスを持っているとしましょう。
しかし、抽象メソッド名(FillMyList)のほかに、実際にMyListを埋めなければならないことを示唆していますが、このメソッドが意味するものには何の手がかりもありません。
Baseから継承しているときにMyListを埋める必要があることを強く示唆する(より良い)方法がありますか?あなたは何を示唆するか
protected abstract void FillMyList(List<string> listToFill);
: はたぶんFillMyListのように宣言しましたか?
抽象メソッドとプロパティはどちらも同じ効果をもたらします。つまり、実装しなければなりません。 – TalentTuner
こんにちはナグ、それはトリックです。ありがとう。 @saurabh:真が、これは何かを、実際に(たとえ空であっても)のリストを返すために派生を強制します。 – sh0uzama