質問編集履歴

2

説明を変更

2023/04/28 05:19

投稿

enamel22
enamel22

スコア0

test CHANGED
File without changes
test CHANGED
@@ -16,8 +16,6 @@
16
16
  この順序で合っていますでしょうか?
17
17
 
18
18
  また、「 SampleC sc = new SampleA();」で「SampleA()」が呼ばれて「(sc.calc(5));」の「5」が呼ばれる経緯が分かりません。「SampleC sc」はこのソースではどういう役目を補っているのでしょうか?
19
-
20
- ----------------------------------------------------
21
19
 
22
20
  上記の流れの後、初めの「return num * 2;」に戻り、「int calc(int num) 」の「(int num) 」が「5」なので「* 2」をして「10」が出力される。
23
21
 

1

説明を追加

2023/04/28 05:18

投稿

enamel22
enamel22

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,51 @@
1
1
  ### 実現したいこと
2
2
 
3
+ この問題を解くときの順序の理解が曖昧なのですが、私の解釈といたしまして、まず初めの
4
+
5
+ 「public class SampleA extends SampleC{
6
+ int calc(int num) {
7
+ return num * 2;」
8
+
9
+ を飛ばして、
10
+
11
+ 「SampleC sc = new SampleA();
12
+ System.out.print(sc.calc(5));」
13
+
14
+ に飛び、「(sc.calc(5))」の「(5)」が「SampleA()」の「()」に呼ばれているので「()」の値は「5」になる。
15
+
3
- 1025が出力されるはどして
16
+ 順序で合っていますでしょうか
17
+
18
+ また、「 SampleC sc = new SampleA();」で「SampleA()」が呼ばれて「(sc.calc(5));」の「5」が呼ばれる経緯が分かりません。「SampleC sc」はこのソースではどういう役目を補っているのでしょうか?
19
+
20
+ ----------------------------------------------------
21
+
22
+ 上記の流れの後、初めの「return num * 2;」に戻り、「int calc(int num) 」の「(int num) 」が「5」なので「* 2」をして「10」が出力される。
23
+
24
+ ここで、
25
+
26
+ 「 sc = new SampleB(); System.out.print(sc.calc(5));」
27
+
28
+ までいかず、最初に「10」を出力する経緯も分かりません。
29
+
30
+ この後、上記と同じように「SampleB()」の「()]
31
+ に「(sc.calc(5));」の「(5)」が呼ばれますが、「sc=new SampleB」のように初めの「Sample○○」のがないのはどうしてでしょうか?
32
+
33
+ またそこから
34
+
35
+ 「public class SampleB extends SampleC{
36
+ int calc(int num) {
37
+ return num * num;」
38
+
39
+ に飛んで「return num * num」をしますが、どの段階でreturnしたんでしょうか?
40
+
41
+ また、
42
+
43
+ 「public abstract class SampleC {
44
+ abstract int calc(int num);」
45
+
46
+ の役割が分からないのですが、どこに関係するソースでしょうか?
47
+
4
- 流れがつかめません。
48
+ 長々と申し訳ありません。
5
49
 
6
50
  ### 該当のソースコード
7
51