0

「RootClass」と「SubClass」の 2 つのクラスがあります。SubClass は RootClass から派生します。SubClass で見つかったフィールドに値を設定できるコンストラクターを RootClass で作成するにはどうすればよいですか?

私は試した:

  • ルートのコンストラクターからサブクラスの値を設定しますが、サブクラスのフィールドは表示されません。
  • サブクラスでコンストラクターを作成しますが、それは起こらないようです。また、ルートのコンストラクターを仮想に設定しようとしたため、サブコンストラクターがそれをオーバーライドする可能性がありますが、運もありません。
  • ばかげているように見える RootClass のコンストラクターで SubClass をインスタンス化します。

基本的に2クラス希望です。SubClass は RootClass と同じですが、いくつかの追加フィールドがあり、値を適用できないようです。ロジックに応じて、ルートまたはサブを作成します。

明らかに私はここで間違った道を進んでいます。どうすればいいですか?

4

6 に答える 6

1

一般に、基本クラスは、サブクラスの実装の詳細を認識すべきではありません。次のように、サブクラスで独自のコンストラクターを提供して、そのフィールドをインスタンス化できる必要があります。

class SubClass : RootClass
{
    private bool subClassfield;

    public SubClass() : base()
    {
        subClassField = true;
    }
}

それは期待どおりに機能しませんか?: base()サブクラスのコンストラクターが基本クラスのコンストラクターを呼び出して、基本クラスが続行する前に初期化されることを保証する式に注意してください。

于 2013-10-16T20:47:21.917 に答える