質問編集履歴

1

自分なりに整理してみました。本人が混乱していますのでまだ分かりにくいかと思いますが、ご容赦ください。

2021/06/15 05:34

投稿

blueletter5
blueletter5

スコア24

test CHANGED
File without changes
test CHANGED
@@ -118,7 +118,7 @@
118
118
 
119
119
  >
120
120
 
121
- >
121
+ > 「15 型の継承について見ていこう
122
122
 
123
123
  > 型の継承
124
124
 
@@ -128,6 +128,150 @@
128
128
 
129
129
 
130
130
 
131
+
132
+
133
+ この項目で記述されているソースコードは下記のとおりです。コード内のクラス、SponsoredPostは
134
+
135
+ クラスPostを継承しています。よって両方のクラスともにPost型として扱えると説明があります。
136
+
137
+
138
+
139
+ ソース内のこの箇所で processPostという関数を作成し、変数$postにPost型と型付けをし
140
+
141
+ ```
142
+
143
+ function processPost(Post $post){
144
+
145
+ $post->show();
146
+
147
+ }
148
+
149
+ ```
150
+
151
+
152
+
153
+ そしてforeachでPostで型付けられた$post型(クラスPostとそれを継承したクラスSponsoredPost)をひとつづつ取り出し、processPostを用いてそれぞれにshow()メソッドで表示させています。
154
+
155
+ ```
156
+
157
+ foreach($posts as $post){
158
+
159
+ processPost($post);
160
+
161
+ }
162
+
163
+
164
+
165
+ ```
166
+
167
+
168
+
169
+
170
+
171
+ ソースコード
172
+
173
+ ```ここに言語を入力
174
+
175
+ <?php
176
+
177
+
178
+
179
+ class Post{
180
+
181
+
182
+
183
+ protected $text;
184
+
185
+
186
+
187
+ public function __construct($text){
188
+
189
+ $this->text = $text;
190
+
191
+ }
192
+
193
+ public function show(){
194
+
195
+
196
+
197
+ printf('%s',$this->text);
198
+
199
+ }
200
+
201
+ }
202
+
203
+ //↑------classPost------↑
204
+
205
+
206
+
207
+ //↓------classSponsoredPost------↓
208
+
209
+
210
+
211
+ class SponsoredPost extends Post{
212
+
213
+
214
+
215
+ private $sponsor;
216
+
217
+
218
+
219
+ public function __construct($text, $sponsor){
220
+
221
+ parent::__construct($text);
222
+
223
+ $this->sponsor = $sponsor;
224
+
225
+ }
226
+
227
+
228
+
229
+
230
+
231
+ public function show(){
232
+
233
+ printf('%s by %s', $this->text, $this->sponsor);
234
+
235
+ }
236
+
237
+ }
238
+
239
+ //↑------classSponsoredPost------↑
240
+
241
+ $posts = [];
242
+
243
+ $posts[0] = new Post('hello');
244
+
245
+ $posts[1] = new Post('hello again');
246
+
247
+ $posts[2] = new SponsoredPost('iPhone','Apple');
248
+
249
+
250
+
251
+ function processPost(Post $post){
252
+
253
+ $post->show();
254
+
255
+ }
256
+
257
+
258
+
259
+ // 型の継承がされているでSponsoredPost型のインスタンスも
260
+
261
+ // Post型として扱うことができうまくいく
262
+
263
+
264
+
265
+ foreach($posts as $post){
266
+
267
+ processPost($post);
268
+
269
+ echo "<br>";
270
+
271
+ ```
272
+
273
+
274
+
131
275
  「15 型の継承について見ていこう」という項目では
132
276
 
133
277
  > Post型の変数を受け取る関数を作って、データ型が継承されることを説明していきます。
@@ -136,17 +280,29 @@
136
280
 
137
281
 
138
282
 
139
-
140
-
141
- なっます。
283
+ この項目ではこう解説しあります。
142
-
284
+
285
+
286
+
143
- クラスを継承すると親クラスのプロパティやメソッドが子クラスに継承されるというのは理解できています。
287
+ クラスを継承すると親クラスのプロパティやメソッドが子クラスに継承されるというのは理解できています。「15 型の継承について見ていこう」という項目では
144
-
145
-
146
-
147
- ”データ型が継承される”というのはここでは下記の2か所を指しているのでしょうか?
288
+
148
-
149
- %s と %s by %s で「文字列出力す」とフォマット指定されています。
289
+ > Post型の変数受け取関数を作って、デタ型継承されることを説明しています。
290
+
291
+ 型の継承 型を継承するメリット
292
+
293
+
294
+
295
+ とこの項目ではこう解説してあります。
296
+
297
+
298
+
299
+ クラスを継承すると親クラスのプロパティやメソッドが子クラスに継承されるというのは理解できています。私の知っているデータ型(文字列型、整数型、浮動小数点数型、論理型、配列型、オブジェクト型、リソース型、NULL)は下記の2か所だけです。
300
+
301
+ show()メソッド内の、['%s']と['%s by %s']で文字列が指定されています。
302
+
303
+
304
+
305
+
150
306
 
151
307
 
152
308
 
@@ -174,123 +330,23 @@
174
330
 
175
331
  ```
176
332
 
177
- ソースコードは下記とおりす。
333
+ したがってこ項目説明されている
178
-
179
- 要するにこのサイトのこの項目ではプロパティやメソッドだけでなく付随するデータ型(
334
+
180
-
181
- 文字列、整型、浮動小点数型論理型、配列型、オブジェクト型、リソ、NULL)
335
+ > Postの変を受け取る関を作ってが継承されることを説明していきます。
182
-
336
+
183
- 継承されということなのでしょうか? ソー
337
+ > 型の継承 型を継承すメリット
184
-
185
-
186
-
338
+
339
+
340
+
187
- 初歩的な質問か思いますがPost型の変数を受け取る関数を作って、データ型が継承されることを説明していきます。」という文面に対して混乱しています。ウェブサイトや教材を眺めてもクラス継承際にデータ型も継承されるというという点を見つけが出来ませんでした。
341
+ は、「クラス継承する際にプロパティやメソッドだけでなく、データ型、ここでは(['%s']と['%s by %s'])も継承されるというが説明されているという解釈よろいのでしょうか?
188
-
342
+
189
- 初学者です。もし解釈が間違っているのなばご指摘願ます
343
+ 少し混乱しています。もし私の解釈が間違っているようでした教えてください。
190
-
191
-
192
-
193
- ソースコード
344
+
194
-
195
- ```ここに言語を入力
196
-
197
- <?php
198
-
199
-
200
-
201
- class Post{
202
-
203
-
204
-
205
- protected $text;
206
-
207
-
208
-
209
- public function __construct($text){
210
-
211
- $this->text = $text;
212
-
213
- }
214
-
215
- public function show(){
216
-
217
-
218
-
219
- printf('%s',$this->text);
220
-
221
- }
222
-
223
- }
224
-
225
- //↑------classPost------↑
226
-
227
-
228
-
229
- //↓------classSponsoredPost------↓
230
-
231
-
232
-
233
- class SponsoredPost extends Post{
234
-
235
-
236
-
237
- private $sponsor;
238
-
239
-
240
-
241
- public function __construct($text, $sponsor){
242
-
243
- parent::__construct($text);
244
-
245
- $this->sponsor = $sponsor;
246
-
247
- }
248
-
249
-
250
-
251
-
252
-
253
- public function show(){
254
-
255
- printf('%s by %s', $this->text, $this->sponsor);
256
-
257
- }
258
-
259
- }
260
-
261
- //↑------classSponsoredPost------↑
262
-
263
- $posts = [];
264
-
265
- $posts[0] = new Post('hello');
266
-
267
- $posts[1] = new Post('hello again');
268
-
269
- $posts[2] = new SponsoredPost('iPhone','Apple');
270
-
271
-
272
-
273
- function processPost(Post $post){
274
-
275
- $post->show();
276
-
277
- }
278
-
279
-
280
-
281
- // 型の継承がされているでSponsoredPost型のインスタンスも
282
-
283
- // Post型として扱うことができうまくいく
284
-
285
-
286
-
287
- foreach($posts as $post){
288
-
289
- processPost($post);
345
+ 初学者です。よろしくお願いいたします。
290
-
291
- echo "<br>";
346
+
292
-
293
- ```
347
+
348
+
349
+
294
350
 
295
351
  <表示結果?
296
352