回答編集履歴
3
些細
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
「メソッド名が同じでも行動がそれぞれの継承先のクラス(インスタンス)で異なること」は多態性のための前準備です。
|
6
6
|
|
7
|
-
**その上で**「単一のメソッド呼び出しが**実行時に**異なる振る舞いをすること」ができてはじめて多態性が実現
|
7
|
+
**その上で**「単一のメソッド呼び出しが**実行時に**異なる振る舞いをすること」ができてはじめて多態性が実現できたといえるのです。
|
8
8
|
|
9
9
|
|
10
10
|
|
2
追記
test
CHANGED
@@ -30,6 +30,20 @@
|
|
30
30
|
|
31
31
|
|
32
32
|
|
33
|
+
追記
|
34
|
+
|
35
|
+
もう少し詳しく書くと。
|
36
|
+
|
37
|
+
☆部分の`a.eat();`というコードが何を実行するかはコンパイルした時には決まっていません。
|
38
|
+
|
39
|
+
`getSomeAnimalInstance();`が猫のインスタンスを返してきたら☆で実行されるのは"猫のeatメソッド"になります。犬のインスタンスを返してきたら"犬のeatメソッド"になります。
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
このような「☆の部分に書かれているコードが単一的でもあるにも関わらず、猫のeatメソッドが呼ばれるのか犬のeatメソッドが呼ばれるのかがコンパイル時点で決まることなく実行時に変化するという**性質**」のことを多態性と呼びます。
|
44
|
+
|
45
|
+
|
46
|
+
|
33
47
|
|
34
48
|
|
35
49
|
----
|
1
些細
test
CHANGED
@@ -40,4 +40,4 @@
|
|
40
40
|
|
41
41
|
Javaカテゴリなのでこれで十分ですが、このやり方は多態性を実現する手段の一例でしかありません。
|
42
42
|
|
43
|
-
クラススタイルのオブジェクト指向プログラミング言語ではこういう手段で多態性を実現しますが、クラススタイルではないオブジェクト指向プログラミング言語やオブジェクト指向ではないプログラミング言語では
|
43
|
+
クラススタイルのオブジェクト指向プログラミング言語ではこういう手段で多態性を実現しますが、クラススタイルではないオブジェクト指向プログラミング言語やオブジェクト指向ではないプログラミング言語では別の手段で多態性を実現しますよ。
|