回答編集履歴

1

回答内容の誤りを修正

2019/08/07 12:56

投稿

S_kawa
S_kawa

スコア156

test CHANGED
@@ -1,34 +1,90 @@
1
1
  実際に動かしたいのはbDao#selectHogeですよね?
2
2
 
3
- インスタンス化の際にaDao dao = ...としているのでアクセスできるのはaDaoのメソッドだけです。
3
+ ~~インスタンス化の際にaDao dao = ...としているのでアクセスできるのはaDaoのメソッドだけです。
4
4
 
5
- インスタンス化したdaoはaDaoクラスだからです、という説明で大丈夫でしょうか?
5
+ インスタンス化したdaoはaDaoクラスだからです、という説明で大丈夫でしょうか?~~
6
6
 
7
7
 
8
8
 
9
- 実際のインスタンスには継承したbDaoを含みますが、aDaoとして扱う以上はaDaoクラス以外のフィールドもメソッドも使うことは出来ません。
9
+ ~~実際のインスタンスには継承したbDaoを含みますが、aDaoとして扱う以上はaDaoクラス以外のフィールドもメソッドも使うことは出来ません。~~
10
10
 
11
11
 
12
12
 
13
- したがってこの場合は```bDao dao = new bDao();```とするのが良いでしょう。
13
+ ~~したがってこの場合は```bDao dao = new bDao();```とするのが良いでしょう。~~
14
14
 
15
15
 
16
16
 
17
- ```Java
17
+ 上記回答は誤りです。
18
18
 
19
- public class JIKKEN {
19
+ 他の回答者様の回答やコメントの通り、引数違いではないでしょうか。
20
+
21
+ bDaoに同じメソッド名で別の引数を持つメソッドを作ってしまうと呼び出すことが出来ません。
22
+
23
+ これは```aDao dao = ```でインスタンス化している為、aDaoのメソッドシグネチャしか認識できない為です。
20
24
 
21
25
 
22
26
 
23
- class ADao {
27
+ ---
24
28
 
29
+ ご指摘を頂いたので再確認。
30
+
31
+ 確かによく考えればオーバーライドされたメソッドが呼ばれますね。
32
+
33
+ (自分でもインスタンス化でbDaoになってると言いながら…)
34
+
35
+
36
+
37
+ Eclipseのハイライト見てA側だなと思って確認せず回答してしまいました。
38
+
39
+ 誤った情報を載せてしまい申し訳ございません。
40
+
41
+
42
+
43
+ ![EclipseのHC](0a30234c78256ec6e1f60edde08c7306.png)
44
+
45
+
46
+
47
+ 検証コードを分かりやすく変更
48
+
49
+ [paiza.ioで実行](https://paiza.io/projects/Kpvxj6MK3mCv9tOXBhCflA)
50
+
51
+ ```Java
52
+
53
+ import java.util.*;
54
+
55
+
56
+
25
- public String aString;
57
+ public class Main {
58
+
59
+ public static void main(String[] args) throws Exception {
60
+
61
+
62
+
63
+ ADao dao = new BDao();
64
+
65
+ System.out.println(dao.aString);
66
+
67
+ //System.out.println(dao.bString);
68
+
69
+ System.out.println(dao.procA());
70
+
71
+ //System.out.println(dao.procB());
72
+
73
+ //System.out.println(dao.procA("追加引数"));
74
+
75
+ }
76
+
77
+
78
+
79
+ public static class ADao {
80
+
81
+ public String aString = "AaString";
26
82
 
27
83
 
28
84
 
29
85
  public String procA() {
30
86
 
31
- return null;
87
+ return "AprocA";
32
88
 
33
89
  }
34
90
 
@@ -36,9 +92,11 @@
36
92
 
37
93
 
38
94
 
39
- class BDao extends ADao {
95
+ public static class BDao extends ADao {
40
96
 
97
+ public String aString = "BaString";
98
+
41
- public String bString;
99
+ public String bString = "BbString";
42
100
 
43
101
 
44
102
 
@@ -46,7 +104,15 @@
46
104
 
47
105
  public String procA() {
48
106
 
107
+ return "BprocA";
108
+
109
+ }
110
+
111
+
112
+
113
+ public String procA(String exArg) {
114
+
49
- return null;
115
+ return exArg;
50
116
 
51
117
  }
52
118
 
@@ -54,27 +120,7 @@
54
120
 
55
121
  public String procB() {
56
122
 
57
- return null;
58
-
59
- }
60
-
61
- }
62
-
63
-
64
-
65
- class BLogic {
66
-
67
- public void exec() {
68
-
69
- ADao dao = new BDao();
123
+ return "BprocB";
70
-
71
- String ret1 = dao.aString; //○
72
-
73
- String ret2 = dao.bString; //×
74
-
75
- String ret3 = dao.procA(); //○ これはADao#procA
76
-
77
- String ret4 = dao.procB(); //×
78
124
 
79
125
  }
80
126