質問編集履歴

4

締めの言葉を追記

2021/02/02 15:10

投稿

nono1234
nono1234

スコア25

test CHANGED
File without changes
test CHANGED
@@ -213,3 +213,23 @@
213
213
 
214
214
 
215
215
  またややこしい例を持ち出して申し訳ありませんが,私がNameListを例として挙げてしまったがために本筋と外れた議論になってしまったので追記させていただきます.
216
+
217
+
218
+
219
+ //追記その2
220
+
221
+ staticにすべき変数論に発散してしまったので,一度締めさせていただきます。
222
+
223
+ みなさまのご意見非常に勉強になりました.
224
+
225
+ 頂いた意見の中では
226
+
227
+ - 抽象プロパティで定義する(もしかすると実際にはできない?)
228
+
229
+ - PersonMangerクラスで管理する
230
+
231
+ が特に参考になりました。
232
+
233
+
234
+
235
+ 今回の例では具体的過ぎて,「Personであったらそのように実装すべきでない」という意見を数多く頂きましたが,実際クラスで一括管理したいstaticなものがあると思うのですが,どうやらstaticの認識がみなさまのものと違っているようです.もういちど勉強します・

3

お詫びと別の例

2021/02/02 15:10

投稿

nono1234
nono1234

スコア25

test CHANGED
File without changes
test CHANGED
@@ -181,3 +181,35 @@
181
181
  また,そもそも設計思想が間違っているのでしょうか?
182
182
 
183
183
  (NameListをPersonのstaticにすべきでないなど)
184
+
185
+
186
+
187
+ 2021/2/2追記:
188
+
189
+
190
+
191
+ みなさまから多くの意見を頂き本当にありがとうございます.
192
+
193
+ まず最初に謝らせていただくこととして,このコード例は問題を具体化したかったために,作った
194
+
195
+ ものです.
196
+
197
+ やりたかったことはabstract classを継承した子クラスが,それぞれstaticな変数を持つ時に親クラスでstatic宣言した場合,親クラスのものと同一のものになるのではなく,子クラスでstaticなものを持っていてほしいということです.(Personの場,Boyの場,Girlの場があり,それぞれに同様の意味を持つstaticな変数を持たせたい)
198
+
199
+ そして,staticな関数の中で,自身の場を参照したいような時にも親クラスの場を参照してしまうという問題点を解決したいというものです.
200
+
201
+ 適当な例としてstaticなNameListと,staticなNameListをCSV出力する関数を挙げたつもりでしたが不適切でした.確かにPersonがNameListを持つべきではありません
202
+
203
+
204
+
205
+ 例えば染色体(Chromosomes)をPersonは持っています.これはどのPersonにもあり,インスタンスごとに違うものでもないのでstaticです(もしかしてここの理解が間違っているのでしょうか?).ただし,Personの染色体はこの時点では不定なので,定義だけされています.
206
+
207
+ Personを継承したBoyも染色体を持ちます.Boyの場合はxyです.Girlの場合xxです.
208
+
209
+
210
+
211
+ この時Boy.Chromosomos="xy", Girl.Chromosomos="xx"だと思うので,親と,それを継承した子1, 子2......で別のstaticな変数が欲しいという場面はあると思います
212
+
213
+
214
+
215
+ またややこしい例を持ち出して申し訳ありませんが,私がNameListを例として挙げてしまったがために本筋と外れた議論になってしまったので追記させていただきます.

2

文章の修正

2021/02/02 10:47

投稿

nono1234
nono1234

スコア25

test CHANGED
File without changes
test CHANGED
@@ -170,6 +170,8 @@
170
170
 
171
171
  1:Person Boy GirlのNameListが同一のものになっているので別々に持たせたいです.
172
172
 
173
+ Boy Girl側でPublic new static List<string> NameListをしたら持たせられるのですが,Person側でできないでしょうか?
174
+
173
175
  2:staticメソッドのSaveNameListもPersonクラスのNameListを参照するため,想定の動作をしません.
174
176
 
175
177
  どのようにすればよいでしょうか?

1

文章の修正

2021/02/01 14:29

投稿

nono1234
nono1234

スコア25

test CHANGED
File without changes
test CHANGED
@@ -168,9 +168,9 @@
168
168
 
169
169
  こんな感じで,BoyとGirlでそれぞれNameListを持たせたいのですが,実際にこのコードを実行すると,2つ問題があります.
170
170
 
171
- 1:Person Boy GirlのNameListに追加されします.
171
+ 1:Person Boy GirlのNameListが同一のものなっているので別々に持たせたいです.
172
172
 
173
- また,staticメソッドのSaveNameListもPersonクラスのNameListを参照するため,想定の動作をしません.
173
+ 2:staticメソッドのSaveNameListもPersonクラスのNameListを参照するため,想定の動作をしません.
174
174
 
175
175
  どのようにすればよいでしょうか?
176
176