回答編集履歴

2

修正

2021/12/16 01:48

投稿

quickquip
quickquip

スコア11310

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

些細

2021/12/16 01:48

投稿

quickquip
quickquip

スコア11310

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型のインスタンス"で実装したメソッドの方なんですよ」という挙動──interfaeと実装クラスの間にある多相性(多態性)という機能──を**教えるための**コードです。
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とはこういうもので、このように使い……」という**教科書的な**話を重ねて始めなければなりません。