実現したいこと
- 基底クラスの関数内でつかうメンバ変数を、継承クラスで上書きしたものへと変更したい
前提
この結果は 1
と表示されます。
結果が 2
となるようにするには、どのように実現するのが一番よいでしょうか?
(例)
c#
1using System; 2 3public class Test 4{ 5 public static void Main() 6 { 7 B b = new B(); 8 b.C(); 9 } 10} 11public class A 12{ 13 protected static int x = 1; 14 public virtual void C() 15 { 16 Console.WriteLine(x); 17 } 18} 19 20public class B : A 21{ 22 protected new int x = 2; 23 public override void C() 24 { 25 base.C(); 26 } 27}
試したこと
方法1: この方法だと別の継承クラスを作るたびに、同じコードをコピーすることになるためやりたくないです。
c#
1public class B : A 2{ 3 protected new int x = 2; 4 public override void C() 5 { 6 Console.WriteLine(x); 7 } 8}
方法2: できれば、classA
の x
は static のままが好ましいと思っています。
c#
1public class A 2{ 3 protected int x = 1; 4 ... 5} 6 7public class B : A 8{ 9 protected new int x = 2; 10 public override void C() 11 { 12 base.x = x; 13 Console.WriteLine(x); 14 } 15}

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/10/19 09:44