teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

説明を変更

2023/04/28 05:19

投稿

enamel22
enamel22

スコア0

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

1

説明を追加

2023/04/28 05:18

投稿

enamel22
enamel22

スコア0

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,52 @@
1
1
  ### 実現したいこと
2
2
 
3
- 1025出力されるはどうしてか。
3
+ この問題を解くときの順序の理解曖昧なですが、私の解釈といたまし、まず初めの
4
- 流れがつかめません。
5
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
+
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
+
48
+ 長々と申し訳ありません。
49
+
6
50
  ### 該当のソースコード
7
51
 
8
52
  ```ここに言語名を入力