いつもお世話になっております。
本日は、
親クラスを継承した子クラスが生成される際の、
- 親クラスのコンストラクタ実行
- 子クラスのコンストラクタ実行
の処理で、①の処理を変更する方法について質問です。
分かりにくいため、以下にサンプルコードで説明致します。
C#
1public class ParentClass 2{ 3 /// 定数のサンプル 4 private const int DefineSample = 12000; 5 6 public ParentClass() 7 { 8 // ※コンストラクタ内で DefineSample を使用する 9 } 10}
<前提条件>
- 親クラス(ParentClass)は、定数DefineSampleを持っている。
- 親クラス(ParentClass)は、コンストラクタ内で上記の定数を使用した処理を実施する。
- 子クラスは、親クラス(ParentClass)を継承したい。
(親クラス・子クラスで共通の処理があるため)
- 子クラスでは、親クラス(ParentClass)の定数(DefineSample)を変更する必要がある。
- 定数(DefineSample)は、親クラス内のさまざまな箇所で使用されているため、値を保持する必要がある。
この条件において、自分が考えている実現方法は以下です。
C#
1public class ParentClass 2{ 3 /// 定数のサンプル 4 //private const int DefineSample = 12000; 5 protected virtual int DefineSample => 12000;//プロパティに変更 6 7 public ParentClass() 8 { 9 // ※コンストラクタ内で DefineSample を使用する 10 } 11 } 12 13public class ChildClass : ParentClass 14{ 15 protected override int DefineSample => 530000;//override 16 17 public ChildClass() : base() 18 { 19 } 20}
<修正案①>
- 定数はOverrideできないため、親クラス(ParentClass)の定数をプロパティに変更する。
- 子クラスでは、プロパティをOverrideし、子クラスで使用する値に変更する。
これにより、子クラス生成時には、
子クラスで再定義したDefineSampleを使用し、親クラスのコンストラクタを実行
→子クラスのコンストラクタを実行
という流れになると考えています。
★質問
上記以外の修正方法があればご教授願いたいです。
説明が拙く、申し訳ありませんが、よろしくお願いいたします。
<環境>
言語:C#(.Net Framework 4.5.2)