回答編集履歴

1

訂正

2018/05/04 18:17

投稿

HogeAnimalLover
HogeAnimalLover

スコア4830

test CHANGED
@@ -2,4 +2,50 @@
2
2
 
3
3
 
4
4
 
5
+ 修正
6
+
5
- ポリモーフィズムとは継承によって作成した派生クラスにおいてメソッドのオーバーライド(同名、同引数のメソッドを上書き定義すること)で実現します。
7
+ ~~ポリモーフィズムとは継承(実装)によって作成した派生(実装)クラスにおいてメソッドのオーバーライド(同名、同引数のメソッドを上書き定義すること)で実現します。~~
8
+
9
+
10
+
11
+ **以下、追記**
12
+
13
+ 他の回答を見て、私も調べなおしました。必ずしも継承(実装)が必要というわけではないという資料がありました。例えばオーバーロードとかテンプレート(ジェネリクス)によるものであってもポリモーフィズムと呼ぶそうでした。こうなるとDLLの差し替えとかも一種のポリモーフィズムと呼べると解釈できるのかもしれません。
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+ ただし、課題の中で提示されたプログラムはポリモーフィズムとは呼べないという考えは変わりありません。
22
+
23
+
24
+
25
+ > $a = new A();
26
+
27
+ $b = new B();
28
+
29
+ $a->method();
30
+
31
+ $b->method();
32
+
33
+
34
+
35
+ ↑の部分を分離し、↓のように別ファイルにすることができればポリモーフィズムと呼べると思います。
36
+
37
+
38
+
39
+ PHPファイル1の一部
40
+
41
+ $x = new A();
42
+
43
+
44
+
45
+ PHPファイル2の一部
46
+
47
+ $x->method();
48
+
49
+
50
+
51
+ これならばPHPファイル1に修正をするだけでPHPファイル2の呼び出し先を変更できるのでポリモーフィズムと呼べると思います。