回答編集履歴

1

追記

2021/07/29 09:17

投稿

shiketa
shiketa

スコア4061

test CHANGED
@@ -9,3 +9,61 @@
9
9
  「親インスタンス部にout()はない」なんで?この理解が間違い。
10
10
 
11
11
  親クラス(Parent)に、インスタンスメソッドout()メソッドを定義しているじゃないですか。parent()メソッドから見えるout()メソッドは、Parentクラスのout()メソッド。だから標準出力に"Parent"と出力される。
12
+
13
+
14
+
15
+ ---
16
+
17
+
18
+
19
+ たとえば、[java.util.ArrayList](https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/java.base/share/classes/java/util/ArrayList.java)を継承したMyListを作るとする。
20
+
21
+
22
+
23
+ ```java
24
+
25
+ public MyList extends java.util.ArrayList{}
26
+
27
+ ```
28
+
29
+
30
+
31
+ ふつう、ArrayListクラスのソースは読まなない。読まずにprivateなgrow()メソッドを書いたとする。
32
+
33
+
34
+
35
+ ```java
36
+
37
+ public MyList extends java.util.ArrayList{
38
+
39
+ private Object[] grow() {
40
+
41
+ return new Object[0];
42
+
43
+ }
44
+
45
+ }
46
+
47
+ ```
48
+
49
+
50
+
51
+ java.util.ArrayListにもgrow()メソッドがある。
52
+
53
+
54
+
55
+ ```java
56
+
57
+ pubic class ArrayList ...
58
+
59
+ private Object[] grow() {
60
+
61
+ return grow(size + 1);
62
+
63
+ }
64
+
65
+ ```
66
+
67
+
68
+
69
+ privateなgrow()メソッドが上書きされて、MyListクラスが動かなくなったら、困るわ。