回答編集履歴
2
修正
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
なぜ、workと出力されるのか教えていただきたいです。
|
3
3
|
|
4
4
|
このコードは「そのようなことにはなりませんよ。実際はこういう結果になりますよ」という**事実を説明**するためのコードです。
|
5
|
-
つまり「"Workerインタフェース型"の変数であるworkerを通じてwork()メソッドを呼んでいるけれども、実際は何が動くのかというと代入されているところの"Enginner型のインスタンス"で実装したメソッドの方なんですよ」という挙動──interfaceと実装クラスの間にある多相性(多態性)という機能──を**示すための**コードです。
|
5
|
+
つまり「"Workerインタフェース型"の変数であるworkerを通じてwork()メソッドを呼んでいるけれども、実際は何が動くのかというと代入されているところの"Enginner型のインスタンス"から見えているすでに実装したあったメソッドの方なんですよ」という挙動──interfaceと実装クラスの間にある多相性(多態性)という機能──を**示すための**コードです。
|
6
6
|
|
7
7
|
機能を示す目的のものに「なぜそう動くのか?」をたずねるのは愚問です。
|
8
8
|
|
1
些細
answer
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
> しかし、私の解釈では、EnginnerのインスタンスをWokerとして扱おうとしているため、Mainクラスの「worker.work();」はWorkerクラスの「 void work();」が参照されると思いました。
|
2
2
|
なぜ、workと出力されるのか教えていただきたいです。
|
3
3
|
|
4
|
-
このコードは「そのようなことにはなりませんよ。実際はこういう結果になりますよ」という事実を
|
4
|
+
このコードは「そのようなことにはなりませんよ。実際はこういう結果になりますよ」という**事実を説明**するためのコードです。
|
5
|
-
つまり「"Workerインタフェース型"の変数であるworkerを通じてwork()メソッドを呼んでいるけれども、実際は何が動くのかというと代入されているところの"Enginner型のインスタンス"で実装したメソッドの方なんですよ」という挙動──
|
5
|
+
つまり「"Workerインタフェース型"の変数であるworkerを通じてwork()メソッドを呼んでいるけれども、実際は何が動くのかというと代入されているところの"Enginner型のインスタンス"で実装したメソッドの方なんですよ」という挙動──interfaceと実装クラスの間にある多相性(多態性)という機能──を**示すための**コードです。
|
6
6
|
|
7
|
-
機能
|
7
|
+
機能を示す目的のものに「なぜそう動くのか?」をたずねるのは愚問です。
|
8
8
|
|
9
9
|
「interfaceとはこういうもので、このように使い、このようなメリットがあります」という説明があって、「では使ってみましょう、こうなります」という構成になっているはずです。
|
10
|
-
|
10
|
+
その様な構成の説明で、コードだけを読んでも意味が無いです。
|
11
|
-
説明を読んで**理解して**コードの挙動に納得する、あるいは逆に、コードの挙動を観察して説明を読んで機能の意図を掴む、というような
|
11
|
+
説明を読んで**理解して**コードの挙動に納得する、あるいは逆に、コードの挙動を**観察して**把握した上で説明を読んで機能の意図を掴む、というような読み方をするべきものです。
|
12
12
|
|
13
|
-
ここで「なぜそう動くのか?」を説明しようとするなら、「interfaceとはこういうもので、このように使い……」という**教科書的な**話を始めなければなりません。
|
13
|
+
ここで「なぜそう動くのか?」を説明しようとするなら、「interfaceとはこういうもので、このように使い……」という**教科書的な**話を重ねて始めなければなりません。
|