teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

締めの言葉を追記

2021/02/02 15:10

投稿

nono1234
nono1234

スコア25

title CHANGED
File without changes
body CHANGED
@@ -105,4 +105,14 @@
105
105
 
106
106
  この時Boy.Chromosomos="xy", Girl.Chromosomos="xx"だと思うので,親と,それを継承した子1, 子2......で別のstaticな変数が欲しいという場面はあると思います
107
107
 
108
- またややこしい例を持ち出して申し訳ありませんが,私がNameListを例として挙げてしまったがために本筋と外れた議論になってしまったので追記させていただきます.
108
+ またややこしい例を持ち出して申し訳ありませんが,私がNameListを例として挙げてしまったがために本筋と外れた議論になってしまったので追記させていただきます.
109
+
110
+ //追記その2
111
+ staticにすべき変数論に発散してしまったので,一度締めさせていただきます。
112
+ みなさまのご意見非常に勉強になりました.
113
+ 頂いた意見の中では
114
+ - 抽象プロパティで定義する(もしかすると実際にはできない?)
115
+ - PersonMangerクラスで管理する
116
+ が特に参考になりました。
117
+
118
+ 今回の例では具体的過ぎて,「Personであったらそのように実装すべきでない」という意見を数多く頂きましたが,実際クラスで一括管理したいstaticなものがあると思うのですが,どうやらstaticの認識がみなさまのものと違っているようです.もういちど勉強します・

3

お詫びと別の例

2021/02/02 15:10

投稿

nono1234
nono1234

スコア25

title CHANGED
File without changes
body CHANGED
@@ -89,4 +89,20 @@
89
89
  どのようにすればよいでしょうか?
90
90
 
91
91
  また,そもそも設計思想が間違っているのでしょうか?
92
- (NameListをPersonのstaticにすべきでないなど)
92
+ (NameListをPersonのstaticにすべきでないなど)
93
+
94
+ 2021/2/2追記:
95
+
96
+ みなさまから多くの意見を頂き本当にありがとうございます.
97
+ まず最初に謝らせていただくこととして,このコード例は問題を具体化したかったために,作った
98
+ ものです.
99
+ やりたかったことはabstract classを継承した子クラスが,それぞれstaticな変数を持つ時に親クラスでstatic宣言した場合,親クラスのものと同一のものになるのではなく,子クラスでstaticなものを持っていてほしいということです.(Personの場,Boyの場,Girlの場があり,それぞれに同様の意味を持つstaticな変数を持たせたい)
100
+ そして,staticな関数の中で,自身の場を参照したいような時にも親クラスの場を参照してしまうという問題点を解決したいというものです.
101
+ 適当な例としてstaticなNameListと,staticなNameListをCSV出力する関数を挙げたつもりでしたが不適切でした.確かにPersonがNameListを持つべきではありません
102
+
103
+ 例えば染色体(Chromosomes)をPersonは持っています.これはどのPersonにもあり,インスタンスごとに違うものでもないのでstaticです(もしかしてここの理解が間違っているのでしょうか?).ただし,Personの染色体はこの時点では不定なので,定義だけされています.
104
+ Personを継承したBoyも染色体を持ちます.Boyの場合はxyです.Girlの場合xxです.
105
+
106
+ この時Boy.Chromosomos="xy", Girl.Chromosomos="xx"だと思うので,親と,それを継承した子1, 子2......で別のstaticな変数が欲しいという場面はあると思います
107
+
108
+ またややこしい例を持ち出して申し訳ありませんが,私がNameListを例として挙げてしまったがために本筋と外れた議論になってしまったので追記させていただきます.

2

文章の修正

2021/02/02 10:47

投稿

nono1234
nono1234

スコア25

title CHANGED
File without changes
body CHANGED
@@ -84,6 +84,7 @@
84
84
 
85
85
  こんな感じで,BoyとGirlでそれぞれNameListを持たせたいのですが,実際にこのコードを実行すると,2つ問題があります.
86
86
  1:Person Boy GirlのNameListが同一のものになっているので別々に持たせたいです.
87
+ Boy Girl側でPublic new static List<string> NameListをしたら持たせられるのですが,Person側でできないでしょうか?
87
88
  2:staticメソッドのSaveNameListもPersonクラスのNameListを参照するため,想定の動作をしません.
88
89
  どのようにすればよいでしょうか?
89
90
 

1

文章の修正

2021/02/01 14:29

投稿

nono1234
nono1234

スコア25

title CHANGED
File without changes
body CHANGED
@@ -83,8 +83,8 @@
83
83
  Personクラスはインスタンス生成時に自身の場のNameListに生成された人の名前のリストを自動的に保存します.
84
84
 
85
85
  こんな感じで,BoyとGirlでそれぞれNameListを持たせたいのですが,実際にこのコードを実行すると,2つ問題があります.
86
- 1:Person Boy GirlのNameListに追加されします.
86
+ 1:Person Boy GirlのNameListが同一のものなっているので別々に持たせたいです.
87
- また,staticメソッドのSaveNameListもPersonクラスのNameListを参照するため,想定の動作をしません.
87
+ 2:staticメソッドのSaveNameListもPersonクラスのNameListを参照するため,想定の動作をしません.
88
88
  どのようにすればよいでしょうか?
89
89
 
90
90
  また,そもそも設計思想が間違っているのでしょうか?