回答編集履歴
3
追記
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
まず2つあります。
|
2
2
|
|
3
|
-
- そもそもフィールドは
|
3
|
+
- そもそもフィールドはオーバーライドされない。
|
4
4
|
|
5
5
|
- 親クラス(Player)から子クラス(Hero)のフィールドを参照することはできない
|
6
6
|
|
@@ -17,6 +17,8 @@
|
|
17
17
|
同名のフィールドを子クラスで定義した場合、親クラス、子クラスでそれぞれ同名のフィールドを持っています。
|
18
18
|
|
19
19
|
ですので、子クラス側で親クラスのフィールドに値を設定したつもりでも、子クラス側に設定されます。
|
20
|
+
|
21
|
+
継承自体されますが、他のクラスから参照できるかは、可視性によります。
|
20
22
|
|
21
23
|
|
22
24
|
|
2
追記
test
CHANGED
@@ -10,8 +10,6 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
--
|
14
|
-
|
15
13
|
追記
|
16
14
|
|
17
15
|
「継承されない」は、間違いでは?については、その通りです。
|
@@ -20,15 +18,17 @@
|
|
20
18
|
|
21
19
|
ですので、子クラス側で親クラスのフィールドに値を設定したつもりでも、子クラス側に設定されます。
|
22
20
|
|
23
|
-
---
|
24
|
-
|
25
21
|
|
26
22
|
|
27
23
|
対応としては、いくつかありますが。
|
28
24
|
|
29
25
|
|
30
26
|
|
27
|
+
前提としては、子クラス側のフィールドは削除します。
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
-
0. YamakawaJunichiさんの言うとおり、子クラス側
|
31
|
+
0. YamakawaJunichiさんの言うとおり、子クラス側から親クラスの値を直接変更する
|
32
32
|
|
33
33
|
0. 乱数設定の部分をPlayerのコンストラクタに実装する
|
34
34
|
|
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
|
48
48
|
|
49
|
-
子クラスから呼べるセッターを用意する
|
49
|
+
子クラスから呼べるセッターを用意する場合、上記1の方法とほぼ同じです。
|
50
50
|
|
51
51
|
セッターで値を変更できるようにしたくないなら、2と3両方コンストラクタを用意すれば、
|
52
52
|
|
1
継承とオーバーライドをミスったので修正
test
CHANGED
@@ -1,12 +1,26 @@
|
|
1
1
|
まず2つあります。
|
2
2
|
|
3
|
-
- そもそもフィールドは継承されない。
|
3
|
+
- そもそもフィールドは~~継承~~オーバーライドされない。
|
4
4
|
|
5
5
|
- 親クラス(Player)から子クラス(Hero)のフィールドを参照することはできない
|
6
6
|
|
7
7
|
|
8
8
|
|
9
9
|
PlayerクラスのgetParameterはHeroクラスの値を見ることはないので、初期値のままとなります。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
--
|
14
|
+
|
15
|
+
追記
|
16
|
+
|
17
|
+
「継承されない」は、間違いでは?については、その通りです。
|
18
|
+
|
19
|
+
同名のフィールドを子クラスで定義した場合、親クラス、子クラスでそれぞれ同名のフィールドを持っています。
|
20
|
+
|
21
|
+
ですので、子クラス側で親クラスのフィールドに値を設定したつもりでも、子クラス側に設定されます。
|
22
|
+
|
23
|
+
---
|
10
24
|
|
11
25
|
|
12
26
|
|