質問編集履歴
4
締めの言葉を追記
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
お詫びと別の例
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
文章の修正
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
文章の修正
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
|
-
|
173
|
+
2:staticメソッドのSaveNameListもPersonクラスのNameListを参照するため,想定の動作をしません.
|
174
174
|
|
175
175
|
どのようにすればよいでしょうか?
|
176
176
|
|