質問編集履歴

3

直した場合の例を追加した

2017/08/11 23:48

投稿

chankane
chankane

スコア139

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- ###該当ソースコード
11
+ ###自分が疑問に思っている部分のコード
12
12
 
13
13
  キャラクターを管理する抽象クラス``AbstractCharacter``
14
14
 
@@ -20,7 +20,7 @@
20
20
 
21
21
  {
22
22
 
23
- private int hp;
23
+ private int hp; // このようにabstract クラスがフィールドを持ってよいか、疑問に思いました。
24
24
 
25
25
  private int mp;
26
26
 
@@ -38,6 +38,22 @@
38
38
 
39
39
 
40
40
 
41
+ protected void addHp(int hp){
42
+
43
+ this.hp += hp;
44
+
45
+ }
46
+
47
+
48
+
49
+ protected void addMp(int mp){
50
+
51
+ this.mp += mp;
52
+
53
+ }
54
+
55
+
56
+
41
57
  public AbstractCharacter(int hp, int mp, URL url){
42
58
 
43
59
  this.hp = hp;
@@ -48,6 +64,84 @@
48
64
 
49
65
  }
50
66
 
67
+
68
+
69
+ abstract public void attack(敵);
70
+
71
+
72
+
73
+ // その他の処理は省略
74
+
75
+ }
76
+
77
+ ```
78
+
79
+ ``AbstractCharacter``を継承した``Wizard``クラス
80
+
81
+ ```java
82
+
83
+ // import 省略
84
+
85
+ public class Wizard extends AbstractCharacter
86
+
87
+ {
88
+
89
+ public Wizard(){
90
+
91
+ super(1500, 5000, Wizard.class.getResource("Wizard.png"));
92
+
93
+ }
94
+
95
+
96
+
97
+ @Override
98
+
99
+ public void attack(敵){
100
+
101
+ 敵.addHp(-200);
102
+
103
+ super.addMp(-50);
104
+
105
+ }
106
+
107
+ // その他の処理は省略
108
+
109
+ }
110
+
111
+ ```
112
+
113
+ ###フィールドを持たせないように上のコードを直したら
114
+
115
+
116
+
117
+ キャラクターを管理する抽象クラス``AbstractCharacter``
118
+
119
+ ```java
120
+
121
+ // import 省略
122
+
123
+ abstract public class AbstractCharacter
124
+
125
+ {
126
+
127
+ // private int hp; // フィールドもない
128
+
129
+ // private int mp;
130
+
131
+ // private Image image;
132
+
133
+
134
+
135
+ // コンストラクタはない
136
+
137
+ // public AbstractCharacter(int hp, int mp, URL url){}
138
+
139
+
140
+
141
+ abstract public void attack(敵);
142
+
143
+
144
+
51
145
  // その他の処理(abstract なメソッド)は省略
52
146
 
53
147
  }
@@ -64,9 +158,43 @@
64
158
 
65
159
  {
66
160
 
161
+ private int hp; // 代わりに派生クラス側でフィールドを全て記述
162
+
163
+ private int mp;
164
+
165
+ private Image image;
166
+
167
+
168
+
169
+ private Image readImage(URL url){
170
+
171
+ // 画像読み込み省略
172
+
173
+ return 画像
174
+
175
+ }
176
+
177
+
178
+
179
+ public Wizard(int hp, int mp, URL url){
180
+
181
+ this.hp = hp;
182
+
183
+ this.mp = mp;
184
+
185
+ this.image = this.readImage(url);
186
+
187
+ }
188
+
189
+
190
+
191
+ @Override
192
+
67
- public Wizard(){
193
+ public void attack(){
194
+
68
-
195
+ 敵.hp -= 200;
196
+
69
- super(1500, 5000, Wizard.class.getResource("Wizard.png"));
197
+ this.hp -= 50;
70
198
 
71
199
  }
72
200
 

2

ミス修正

2017/08/11 23:47

投稿

chankane
chankane

スコア139

test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  // import 省略
18
18
 
19
- public class AbstractCharacter
19
+ abstract public class AbstractCharacter
20
20
 
21
21
  {
22
22
 
@@ -48,7 +48,7 @@
48
48
 
49
49
  }
50
50
 
51
- // その他の処理は省略
51
+ // その他の処理(abstract なメソッド)は省略
52
52
 
53
53
  }
54
54
 

1

コードのミス

2017/08/11 14:25

投稿

chankane
chankane

スコア139

test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  // import 省略
18
18
 
19
- public class AbstractCharacter
19
+ public class AbstractCharacter
20
20
 
21
21
  {
22
22
 
@@ -60,7 +60,7 @@
60
60
 
61
61
  // import 省略
62
62
 
63
- public class Wizard
63
+ public class Wizard extends AbstractCharacter
64
64
 
65
65
  {
66
66