質問編集履歴
2
説明を変更
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
説明を追加
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
|
-
|
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
|
|